首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >received未在componentDidMount中接收

received未在componentDidMount中接收
EN

Stack Overflow用户
提问于 2018-08-03 08:37:32
回答 3查看 1.4K关注 0票数 0

因此,我重写了我的代码,以使用状态,而不是修改道具,因为这不是我应该做的。现在发生的问题是,当componentDidMount运行时,道具仍然没有从后端获取,因此函数中的if语句始终是假的。

代码语言:javascript
复制
componentDidMount() {
    this.props.getTypes('sport');
    this.props.getSchema();
    this.props.getDomainForm();

    if(Object.keys(this.props.schema).length) {
        this.setState({schema: this.props.schema})
    }
    if(Object.keys(this.props.formData).length) {
        this.setState({form: this.props.formData})
    }
}

const mapStateToProps = (state) => {
    return {
        schema: state.admin.settings.Domains.schema.data || {},
        formData: state.admin.settings.Domains.domain.data || {},
        types: state.admin.settings.Domains.types.data || {},
    }
};

我已经完成了这段代码,看起来componentDidMount只运行过一次。既然componentWillRecieveProps不受欢迎,我不知道该怎么做才能解决这个问题,我希望你们能帮我解决这个问题。

PS。fetch操作没有问题,还原器工作得很好,我没有在那里做任何更改,redux调试器正在正确地显示结果。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-08-03 08:51:02

作为componentWillReceiveProps的替代品,引入了static getDerivedStateFromProps(props, state)方法,每当组件接收新的道具时,都会调用它,因此可能会对您有所帮助。这是文档

票数 2
EN

Stack Overflow用户

发布于 2018-08-03 08:46:53

我认为问题在于您的fetch是异步的,完成任务只需一点时间,在完成提取之前,组件将安装在DOM上。

正如您注意到的,您可以看到数据是通过redux调试器接收的,并且您没有问题,所以我猜您将初始状态作为空对象或数组传递给了您的状态。因此,组件通过道具接收数据,而不是将状态更新为reRender组件,只要在收到新数据时,只需使用componentWillReceiveProps更新状态,只需检查当前道具是否与以前的道具相同,下面的代码如下:

代码语言:javascript
复制
componentWillReceiveProps = (nextProps) => {
    if(this.props.yourPropsFromRedux != nextProps.yourPropsFromRedux ) {
      this.setState({ yourState: nextProps.yourPropsFromRedux })
    }
  }
票数 4
EN

Stack Overflow用户

发布于 2020-10-14 13:03:11

使用componentDidUpdatecomponentDidMount更适合于这种情况。componentDidMount将为初始呈现设置状态,componentDidUpdate将为将来呈现设置状态。不要忘记用当前的道具测试componentDidUpdate方法的componentDidUpdate参数,以检查数据是否已经更改。在这里阅读文档

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51668524

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档