Redux Thunk Async React组件已安装

时间:2018-05-04 13:13:10

标签: redux react-redux redux-thunk

componentDidMount() {
    this.props.fetchAccountData();
}
render() {
    const { accounts  } = this.props.accountData;
    policyDetailsInfo =  accounts[0].policy_summary;
    accountDetails = accounts[0];
    return (
      <div>
        <Account
          accountDetails={accountDetails}
          policyDetails={policyDetailsInfo}
        />
      </div>
    )
}

const mapStateToProps = state => ({
  accountData: state.accountData
});

const mapDispatchToProps = {
  fetchAccountData
};

export default connect(mapStateToProps, mapDispatchToProps)(AccountHome);
  1. 这里的componentDidMount是fetchAccountData方法 异步调用。
  2. 这里我想要fetchAccountData响应得到 之后,只有控件进入渲染方法。在这里它会如此 很多时候进入render方法,直到异步调用方法得到 响应。
  3. 由于此控件进入子组件并且该组件已执行 没有得到可能会在回复后填写的财产 来自异步电话。
  4. 此致

1 个答案:

答案 0 :(得分:0)

如果您正确配置了reducer,每当异步调用响应到达时,render()方法AccountHome组件将被触发(因为accountData发生了变化,状态为AccountHome已注册)

const mapStateToProps = state => ({
  accountData: state.accountData
})

您可以通过多种方式编写处理accountData的逻辑,但为了简单起见并专注于您粘贴的代码,请更新render()方法并让其了解accountData prop

render() {
  const accounts = this.props.accountData;
  if(!accounts || !accounts.length ) {
    // set a simple loading solution
    // avoid errors using empty accounts
    return (
      <div>
        Loading content...
      </div>
    }
  }

  // here accounts has data inside
  const policyDetailsInfo =  accounts[0].policy_summary;
  const accountDetails = accounts[0];

  return (
    <div>
      <Account
        accountDetails={accountDetails}
        policyDetails={policyDetailsInfo}
      />
    </div>
  }
}