【发布时间】:2019-10-02 20:11:34
【问题描述】:
考虑以下Component
const Component = () =>{
const [state, setState] = useState(null)
const onClick = () => setState('foo')
console.log(state)
return <button onClick={onClick}> Change </button>
}
- 在按下按钮之前
console只打印null - 第一次按下按钮
console打印foo - 第二次按下按钮结束
console打印foo - 第三次及以后
console不打印任何内容
我知道console 不会打印任何内容,因为我正在调用setState,传递与当前状态相同的值,而 React 是bailing out the state update。我的问题是关于以下断言
请注意,React 可能仍需要再次渲染该特定组件 在保释之前。这不应该是一个问题,因为 React 不会 不必要地“深入”到树中。如果你做的很贵 渲染时计算,您可以使用 useMemo 优化它们。
为什么需要这个额外的渲染?我的意思是,Object.is 不是在第二次点击后返回false 吗?
【问题讨论】:
-
这个问题已经在这里被问及回答了,但没有解释,遗憾的是stackoverflow.com/questions/55373878/…
-
是的。我还没找到答案哈哈哈
标签: reactjs