【发布时间】:2020-09-15 14:09:31
【问题描述】:
在React docs I see this piece of code:
function Example() {
const [count, setCount] = useState(0);
//THE SUBJECT OF MY QUESTION:
useEffect(() => {
document.title = `You clicked ${count} times`;
});
return (
<div>
<p>You clicked {count} times</p>
<button onClick={() => setCount(count + 1)}>
Click me
</button>
</div>
);
}
所以,我的问题是为什么不使用 useEffect 更改 document.title 或任何其他 DOM,如下所示:
function Example() {
const [count, setCount] = useState(0);
//THE SUBJECT OF MY QUESTION:
document.title = `You clicked ${count} times`;
return (
<div>
<p>You clicked {count} times</p>
<button onClick={() => setCount(count + 1)}>
Click me
</button>
</div>
);
}
我知道,例如发送请求时,它是异步的,我们需要在 useEffect 中进行。但是 DOM 操作不是异步的,它需要相对 0 的时间,为什么我们还要使用 useEffect 钩子呢?
【问题讨论】:
-
useEffect 没有第二个参数 ([]) 每次状态变化时都会渲染,所以在我看来它是一样的
标签: reactjs