在切换网址

时间:2017-12-01 18:04:57

标签: reactjs react-redux

所以这是场景:

  • 用户登录并发送/home
  • /home有一个项目列表
  • 点击项目会将用户/documents/58带到项目编号
  • 此URL列出与项目相关的所有文档
  • 用户使用/home导航回navbar并点击其他项目

我遇到的问题是,当用户转到/documents/58,然后导航回/home,然后点击其他项目(例如/documents/61)时,它仍会显示{ {1}}文档,直到服务器以/documents/58响应。

如何清除已从Redux状态(mapStateToProps)映射的道具的当前值?

我知道我需要使用/documents/58,但不确定要放入什么内容。 componentWillUnmount()会导致this.props.planning_meeting = undefined错误。

以下是我对这个容器的看法:

read-only

1 个答案:

答案 0 :(得分:1)

继续上面的评论,您可以更进一步,构建您的状态,以便每个项目都由一个唯一的ID(pm.document)组织。

然后,您可以访问组件中的planning_meeting[id],其中id === pm.document可以从网址参数获取。在这种情况下,你不需要打扰清除道具。

此方法的另一个好处是,您可以确保组件在路由转换到自身之间具有正确的数据。例如,如果您希望用户直接从/documents/1导航到/documents/2,则路由器将不会卸载PlanningMeeting组件,因为它在新路由中重复使用。在这种情况下,由于componentWillUnmount将不会被调用,因此您的明确道具逻辑无法正常工作。通过按文档ID存储项目状态,即使导航到新路径,也可以确保填充适当的数据。

这基本上会缓存您的状态,因此如果您计划修改状态中的数据,则需要确保定义redux操作以相应地更新状态。