Reactjs 为什么React需要另一个渲染来保证状态更新?
考虑以下Reactjs 为什么React需要另一个渲染来保证状态更新?,reactjs,Reactjs,考虑以下组件 const Component = () =>{ const [state, setState] = useState(null) const onClick = () => setState('foo') console.log(state) return <button onClick={onClick}> Change </button> } const组件=()=>{ cons
组件
const Component = () =>{
const [state, setState] = useState(null)
const onClick = () => setState('foo')
console.log(state)
return <button onClick={onClick}> Change </button>
}
const组件=()=>{
const[state,setState]=useState(null)
const onClick=()=>setState('foo')
console.log(状态)
找零
}
- 在按下按钮之前,只需打印
null
- 第一次按下按钮时,控制台prints
foo
- 第二次按钮按下End
console
foo
- 第三次前进
不打印任何内容控制台
console
不会打印任何内容,因为我正在调用setState
传递与当前状态相同的值,并且React是。这部分我很清楚。我的问题是关于以下断言
请注意,React可能仍然需要再次渲染该特定组件
在救援之前。这不应该是一个问题,因为反应不会
不必要地“深入”树中。如果你做的很昂贵
渲染时,可以使用UseMoom优化计算
为什么这个额外的渲染是必要的?我的意思是,不是对象。自从第二次单击后,
是否返回false
内部useState是一个,
钩子使用一个变更队列来更新
在查看代码后,这是一种memoizedState未在队列中完全处理的情况,因为没有使用钩子useMoom的精细控制,这里已经询问并回答了这一问题,但没有解释,很遗憾,是的。我还没有找到答案,但src代码的注释“TODO:不确定这是否是所需的语义,但这是我们为gDSFP所做的。我不记得为什么。”Roflenteresting角度视图