当前位置: 首页 > 知识库问答 >
问题:

如果数据在redux存储中,则调用组件

鲜于玮
2023-03-14

我有一个依赖于redux存储的组件。我的redux商店看起来像这样

{
  user: {
    auth: true,
    id: '5a603c58288fc745f8cada9e',
    first_name: 'john',
    email: 'xyz@abc.com',
    company_id: '5a66d8b92cd8e931680778dc',
    company_name: 'My Company',
  }
}

所以基本上,当我刷新页面时,存储区消失了,需要一些时间来获取数据并将其设置为存储区,如上所述

我有一个组件,它需要company_id来获取有关该公司的数据

 componentDidMount(props) {
      console.log("idddddddd", this.props.company_id)
    // this.props.getCompanyData(this.props.company_id);
  }

使用react-redux我得到了company_id

CompanySetupPage.propTypes = {
  getCompanyData : PropTypes.func.isRequired,
  company_id : PropTypes.string.isRequired
}

function mapStateToProps(state) {
  return {
    company_id : state.user.company_id
  }
}

export default connect(mapStateToProps, {getCompanyData})(CompanySetupPage);

此组件,componentDidMount在存储区接收公司id数据之前被激发。所以我想要的是在这个组件从redux商店获得公司id后调用componentDidMount。

共有2个答案

佴阳辉
2023-03-14

不要使用componentDidMountlifecycle,而是使用componentWillReceivePropslifecycle方法,如下所示

componentWillReceiveProps (nextProps) {
 if (this.props.company_id !== nextProps.company_id) {
    this.props.getCompanyData(this.props.company_id);
 }
}

参考看看这个生命周期方法的留档。文档的组件WillReceiveProps

房学
2023-03-14

我想要的是在这个组件从redux商店获得公司id后调用componentDidMount。

最好不要修改何时调用组件生命周期方法。有关组件生命周期方法的更多信息,请参见本参考资料。

安装组件后只触发一次。company_id可能可用,也可能不可用

在您的情况下,调用api调用的更好的函数是componentWillReceiveProps。

componentWillReceiveProps()在安装的组件接收新的道具之前被调用。安装时,不会调用它。

  componentWillReceiveProps (nextProps) {
     if (this.props.company_id !== nextProps.company_id) {
        this.props.getCompanyData(this.props.company_id);
     }
    }
 类似资料:
  • 我在react native 0.62上工作,我在其中使用了抽屉导航器。当用户登录到应用程序时,我将auth api响应存储到redux存储中。登录后,我想在仪表板头显示登录的用户名,但我无法使用redux存储在我的函数。用钩子试过,但不起作用。任何帮助或建议。提前谢谢你。下面是我的代码: login.reducer.js从'../utility/constants'导入{AUTH_REQUEST

  • 我想修改MongoDB中的文档。以下是相关文档结构的示例摘录: 首先,key包含一个数组数组。我必须搜索嵌套数组中的项(纪元时间,例如)。如何通过嵌套数组值查找文档?例如,我尝试搜索: 诚然,我预计这种方法将通过嵌套数组值进行搜索 其次,如果这个数组值已经存在(纪元时间),我想更新/覆盖嵌套数组中的元素(数据值)。如果数组值在M1数组中不存在,我想将其(以及随附的数据值)添加到M1数组中。 我希望

  • 问题内容: 使用redux更新商店中嵌套数据数组的最佳/正确方法是什么? 我的商店看起来像这样: 我有一对异步操作来更新完整的对象,但是我还有另一对操作要更新特定的数组。 我的减速器当前看起来像这样,但是我不确定这是否是正确的方法: 问题答案: React的不变性帮助器是一种创建普通旧JavaScript对象的更新版本而无需对其进行突变的便捷方法。 您为它提供了要更新的源对象和一个对象,该对象描述

  • 如果df2中不存在数据,我会尝试从df1获取数据,df1中的col1应该与df2中的col3对齐(col2和col4相同)

  • 我目前正在使用axios从我的api中提取JSON数据,我正在映射这个数据并将其存储为变量。我希望能够在我的react组件中调用这些变量,但我似乎找不出最好的方法。 获取JSON数据并将其存储为变量 我希望能够在react组件中调用类似Profile.Major的东西,但我目前尝试的方法并不奏效。请让我知道这样做的正确方法。提前谢谢你。

  • 我目前正在构建一个项目,其中我需要为每个用户保存一个字符串列表(他阅读的文章的网址)。 我正在使用带有sqlite的python烧瓶SQLalchemy。 我知道sqlite不支持数组,所以我正在考虑切换到另一个数据库,而不是sqlite,一个支持数组的数据库。 我想知道你会怎么做?哪个数据库支持数组,或者是否有更好的解决方法。