我是否必须在构造函数()和componentWillReceiveProps()中初始化组件状态?

时间:2017-10-31 19:35:35

标签: reactjs redux lifecycle

在我的 React / Redux 应用程序中,我在index.js(入口点)中触发API调用,因为我希望数据在用户导航到组件之前可用。

实际上,这种方法有助于减少用户的等待时间,因为我们将在用户到达组件之前加载数据。

在我们的用例中,我们需要使用props初始化组件状态(props从商店传递)。我在方法中遇到了以下问题。

  • 案例1:假设用户已经到达API之前的组件 返回该数据。在这种情况下,该特定的商店对象将是 空和道具(从react-redux connect传递 包装器)将是undefined / null。所以我需要渲染"Loading.." 信息。当数据到达时,我们初始化组件状态 在setState()
  • 中使用componentWillRecieveProps().
  • 案例2:如果数据在用户导航到组件之前已到达。 对于这种情况,我们可以使用constructor()componentWillMount()props初始化状态,因为props拥有数据。我不能只依赖于componentWillRecieveProps(),因为它不会在初始化生命周期中执行。

所以我最终在2个地方做了相同的初始化步骤,因为组件应该处理两种情况。这是一种正确的方法吗?或者有没有更好的方法来避免这种DRY代码。

提前致谢!!!

1 个答案:

答案 0 :(得分:0)

我遇到了与您概述的完全相同的问题,并且还想要一个DRY解决方案,因此我最终为此目的创建了HOC(更高阶组件):

https://www.npmjs.com/package/react-prepare-wrapper

它允许您为componentWillMountcomponentWillReceiveProps分配一个要调用的函数。