繁体   English   中英

Redux存储道具不适用于React构造函数

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM