我正在使用flux-router和flux体系结构(facebook&#fs flux实现)。
目前在我的系统中,我的路线上写着" chat /:topic"。
当用户进入此组件时,我正在创建订阅(使用actionWillMount上的操作创建)到websocket服务器,我正在删除componentWillUnmount上的订阅。
当用户移动到另一条路线时,整个工作流程正常工作 - 因为react-router正在卸载我的组件。
当我在我的路线内转换时(从"聊天/游戏"到"聊天/电视"),组件未安装,我需要清除我的状态组件。
我读到了我可以采取的不同行动以及过渡到派遣行动的过程" TRANSITION"每个相关的商店都会清理它的商店。
在我看来,这种行为是错误的,它将我的商店和路由器联系在一起。
你会如何解决这个问题?这是一个我应该提出反应路由器并让他们在我的路线内卸载的问题吗?
答案 0 :(得分:6)
感谢gaearon(https://github.com/gaearon/),
,我找到了答案使用商店保留所选主题并向消息存储区询问消息,因此您不应从商店中删除任何内容,除非出于性能原因需要
。在我的应用程序中,我必须删除消息(因为它们是大对象)并清除我的订阅(以减少服务器上的负载)。
为了达到这个目的,我找到了三种解决方案:
如何实现这一目标的详细信息:
https://github.com/rackt/react-router/issues/292
https://github.com/rackt/react-router/issues/496#issuecomment-64152941
答案 1 :(得分:1)
我相信compomentWillReceiveProps可能会解决您的问题。这就是路由器用来将内容传递给你的反应。
答案 2 :(得分:1)
据我所知,你需要同时使用componentWillReceiveProps和componentDid / WillMount来捕获初始渲染。
我焦急地等待react-router 1.0发布(本周末?),希望有更优雅的方式来实现这一目标。