reactjs – 在React中如何决定是否使用componentWillReceiveProp
发布时间:2020-12-15 20:41:27 所属栏目:百科 来源:网络整理
导读:componentWillMount在第一次渲染时被调用一次 为后续渲染调用componentWillReceiveProps 所以 – 如果我想在组件被渲染的时候做一些动作(例如在商店中初始化一些数据)我在哪里放这个代码? – 这取决于从更高级别组件传入的道具. 问题是我不确定在调用第一个
componentWillMount在第一次渲染时被调用一次
为后续渲染调用componentWillReceiveProps 所以 – 如果我想在组件被渲染的时候做一些动作(例如在商店中初始化一些数据)我在哪里放这个代码? – 这取决于从更高级别组件传入的道具. 问题是我不确定在调用第一个渲染时是否会初始化道具. (道具取决于异步数据).所以 – 我不能把代码放在componentWillMount中.但是,如果我将它放在componentWillReceiveProps中,然后在组件链中更高的位置进行更改,以便数据同步完成,那么我的代码就不会运行了componentWillReceiveProps.这篇文章的动机是我刚刚做到这一点,现在必须重构一堆组件. 似乎唯一的解决方案是将代码放在两种方法中. 没有生命周期方法总是被称为 – 第一次和随后.但是,您如何确定顶级组件中的数据是否必须在第一次渲染时可用?或者那个问题一定不是.或者也许你可以 – 但是你改变了这一点. 这种生活方式对我来说似乎非常脆弱.我错过了什么吗? (最有可能的).
您已经有了答案:将代码放在两种方法中.但是,我建议在两种方法中将道具转换为状态,并使用状态作为单一的事实来源.
componentWillMount () { this.checkAndUpdateState(this.props); } componentWillReceiveProps (nextProps) { this.checkAndUpdateState(nextProps); } checkAndUpdateState (props) { this.setState({ isLoaded: !!props.yourData }); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |