如何调用mapStateToProps

时间:2017-05-08 18:50:22

标签: javascript reactjs redux react-redux

mapStateToProps返回一个包含2个键的对象,提供商&的计划即可。 在计划已经是props的属性之前,无法解析提供者的价值。 提供商取决于计划的属性(plan.provider)。

我的想法是,第一次调用mapStateToProps时,它将返回以下内容:

(确实会发生什么)

{
  plan: [Object],
  provider: undefined
}

现在计划已解析并映射到道具我需要再次调用mapStateToProps,以便提供程序可以解析。第二次mapStateToProps应该返回:

{
  plan: [Object],
  provider: [Object]
}

这是处理这种情况的正确方法吗?

2 个答案:

答案 0 :(得分:1)

我不认为这是解决这个问题的好方法。我相信如果你有计划作为承诺或异步动作,你必须等待更新提供者的价值,你需要做它Redux Middleware.Most可靠的他们在我看来是Thunk,它允许你编写异步代码行动,然后当Promise结算时,您可以更新您所在州的provider

要避免在用户界面提供undefined提供商价值,请使用defaultProps,以帮助您避免因undefined提供商而导致的问题。

我希望有所帮助。

答案 1 :(得分:0)

是的,这是一种非常合理的方法。假设调度了第二个操作,将适当的数据添加到商店,mapState将重新运行并返回更新的值,组件将重新呈现。

应该编写您的React组件,以便它可以安全地处理丢失的provider道具,例如检查它是否存在,如果不存在则返回“loading ...”组件。