关于react生命周期 getDerivedStateFromProps

根据之前的理解props变化会调这个函数。但是我发现改变state也会调用这个函数,也就是说组件的初始化/更新都会调用这个函数。那如果组件的某个状态既依赖于某个内部state,也依赖于某个外部props,这样岂不是很麻烦。

阅读 2.3k
3 个回答

文档都说了

请注意,不管原因是什么,都会在每次渲染前触发此方法

props和state都会触发渲染, props本质来说也是state, 没有state那来的props?

这个静态方法没有this,所以你要像拿来干dom的事,那就是做梦, 派生state,也就是说, 你可以对state加工, 如果 if(state.count % 2 ) return state, 也就说可以在渲染前更改state,或者props.

getDerivedStateFromProps 刚出来的时候,确实是只有props变化才会触发。后来的版本官方改了,props和state都会触发。所以现在这个函数只在一些特殊情况使用,平常用不到了。

所以你需要在didMount和didUpdate中去处理逻辑了

或者用新的React Hooks,能完美解决你的问题

可以参考 antd 涉及到 value 之类的处理方式

内部 state 初始值依赖 props, 如果 传入 value , 那么值受控于外部, 否则自己内部处理

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题