[英]Redux Store Props not Available in time for React Constructor
我已经在Redux&React上工作了几个月。 我通常总是使用Chrome,没有问题。 (实际上是无尽的错误:))。
当我开始在Firefox中进行测试时,遇到了一个问题,我需要一些帮助...以了解是否有解决此问题的完美方法...
调用构造函数时,MapStateToProps的Redux Props尚不可用,这意味着我无法在组件构造函数中构造组件状态。 这些道具随后在渲染功能中迅速可用。 在此阶段,为时已晚,因为我无法在render函数中构造状态(可以以某种方式工作,但是接近正确方法不是很好吗?)。
目前,我正在使用componentWillReceiveProps并使用一个异常复制我的构造函数
构造函数
constructor(props){
super(props);
//Loads of code named A
this.state = {state:A};
}
组件将接收道具功能
componentWillReceiveProps (){
//Loads of code named A
this.setState({state:A});
}
此处可能会覆盖我的状态,但是对于我的确切情况,这里仅显示数据,没有发生UI更改...这两种方式都不会显示正确的方法...
我读了这篇文章https://reactjs.org/blog/2018/06/07/you-probably-dont-need-derived-state.html
我不确定我是否完全理解这一点。 我没有进行任何尝试就做了一些实验。
理想情况下,我需要构造函数暂停直到填充完所有redux存储,这也是没有意义的。 道具数组可能为空。
有关于Slack的讨论,但似乎没有一个能解决这个问题。 我尝试了Google搜索,但找不到确切的问题...
我需要mapStateToProps道具来构造我的状态。 看来我将无法执行此操作,并且需要完全重构代码,使其仅在具有三元运算符的负载的render函数中工作,并且/或者在render返回之前从render函数进行设置状态的调用。
对这个问题有什么想法吗?
丹尼尔
为什么您认为需要将从道具获得的数据放入组件状态? 至于使用数据,两者之间没有什么区别,除了如果您复制道具到状态更容易遇到麻烦(请参阅发布的链接)。
const { A } = this.state;
const { A } = this.props;
如果数据是通过异步方法传入的,则应将其容纳在render方法中。
render() {
const { A } = this.props;
if (!A) {
return <LoadingIndicator />
}
...
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.