所以这是场景:
/home
/home
有一个项目列表/documents/58
带到项目编号/home
导航回navbar
并点击其他项目我遇到的问题是,当用户转到/documents/58
,然后导航回/home
,然后点击其他项目(例如/documents/61
)时,它仍会显示{ {1}}文档,直到服务器以/documents/58
响应。
如何清除已从Redux状态(mapStateToProps)映射的道具的当前值?
我知道我需要使用/documents/58
,但不确定要放入什么内容。 componentWillUnmount()
会导致this.props.planning_meeting = undefined
错误。
以下是我对这个容器的看法:
read-only
答案 0 :(得分:1)
继续上面的评论,您可以更进一步,构建您的状态,以便每个项目都由一个唯一的ID(pm.document)组织。
然后,您可以访问组件中的planning_meeting[id]
,其中id === pm.document
可以从网址参数获取。在这种情况下,你不需要打扰清除道具。
此方法的另一个好处是,您可以确保组件在路由转换到自身之间具有正确的数据。例如,如果您希望用户直接从/documents/1
导航到/documents/2
,则路由器将不会卸载PlanningMeeting组件,因为它在新路由中重复使用。在这种情况下,由于componentWillUnmount
将不会被调用,因此您的明确道具逻辑无法正常工作。通过按文档ID存储项目状态,即使导航到新路径,也可以确保填充适当的数据。
这基本上会缓存您的状态,因此如果您计划修改状态中的数据,则需要确保定义redux操作以相应地更新状态。