React useState踩坑记录
React useState 踩坑记录
毕业设计用的 React 写的后台管理系统,今天写的时候碰到一个坑。
某组件内部用到了useState
这个 hook,state 的初始值是来自于 props 传递。由于用的Ant Design Pro
的模版,它的写法看起来很像 state 的值会随着 props 的更新而更新。实际上useState
的值是不会变的,除非整个组件被销毁然后再被重新渲染,那就是完全重新生成了一个全新的 State。。。而Ant Design Pro
就是用的这个技巧。。。说实话我不是很喜欢这种写法。。有点 magic。。代码如下:
// 父组件 |
上面的代码借用了stepFormValues
的变化,决定是否整个重新渲染UpdateForm
,导致了UpdateForm
内部的 state 会跟随stepFromValues
这个 props 一起变化。。。并且它只是判断stepFormValues
是否有内容,至于内容是否发生了变化它并不关系,也就是说如果只是内容发生了变化UpdateForm
并不会重新渲染。。。