react通过props更改state

今天踩了一个坑,ajax请求的数据在props上,在render上可以获取到reducer穿过来的props。但是,render阶段不允许纯函数修改state,在其他阶段(componentdidmount)又获取不到更新的props。

解决办法:

static getDerivedStateFromProps(nextProps, prevState) {
     // 没错,这是一个static
     console.log(nextProps, prevState)
     const { data } = nextProps.headerNavMsg
     return Boolean(data.rmind)
     ?
     {
         ...prevState,
         shortMsgCount: data.shortMsg.length,
         remindCount: data.rmind.length,
         warnCount: data.warn.length
     }
     :
     null
 }

return null表示步修改state

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容