【发布时间】:2019-11-16 10:17:33
【问题描述】:
我最近在学习 react-hook。我在实践过程中遇到了一个让我无法理解的问题。
import React, { useState, useCallback } from 'react';
const set = new Set();
function Demo() {
const [count, setCount] = useState(0);
const changeValue = useCallback(() => {
setCount(count + 1);
}, []);
set.add(count);
console.log('size: ', set.size);
return(
<div>
<p>Hello React Hook</p>
<p>{count}</p>
<button onClick={changeValue}>count++</button>
</div>
)
}
export default Demo;
// If you click the button multiple times, the output is:
// size: 1
// size: 2
// size: 2
我使用 react-hook 编写了一个计时器。正如我所料,显示的 count 值始终为 1,因为我没有使用 count 作为 useCallback 的依赖项。
但我无法理解的是console.log('size: ', set.size) 只打印了三遍,为什么?每次点击count++按钮,都会导致Demo函数重新执行。所以每次我点击按钮时,不应该console.log('size: ', set.size)会被执行吗?但实际上它只执行了 3 次。
为什么size 保持 2 不变?我知道setCount 每次都会替换一个新的count,所以size 应该不会增加?
请帮我解答我的疑惑,非常感谢。
你可以测试我的代码here。
【问题讨论】:
标签: javascript reactjs react-hooks