【发布时间】:2021-01-28 17:04:07
【问题描述】:
App.js
import React from "react";
import CounterOne from "./CounterOne";
function App() {
const [display, setDisplay] = React.useState(true);
return (
<>
{display && <CounterOne />}
<button
onClick={() => {
setDisplay(!display);
}}
>
display
</button>
</>
);
}
export default App;
CounterOne.js
import React, { useState } from "react";
function CounterOne() {
const [count, setCount] = useState(0);
React.useEffect(() => {
console.log("component did update");
return () => {
console.log("component will unmount");
};
}, [count]);
return (
<div>
<p>Count is {count}</p>
<button
onClick={() => {
setCount(0);
}}
>
reset
</button>
<button
onClick={() => {
setCount(count + 5);
}}
>
Add 5
</button>
<button
onClick={() => {
setCount(count - 1);
}}
>
Sub 1
</button>
</div>
);
}
export default CounterOne;
当我点击 Add 5 或 sub 1 按钮时,组件会重新渲染,然后在浏览器控制台中打印
组件将卸载
组件确实更新了
我很困惑为什么在状态更新发生时会执行卸载部分
【问题讨论】:
-
查看这些帮助:您可以在documentation 中阅读更多相关信息,而this video 真的很有帮助。
标签: reactjs use-effect