【发布时间】:2015-10-01 00:53:15
【问题描述】:
考虑一个多页面应用程序,当您打开一个页面时,它会启动一个计时器,负责每隔 n 秒收集一次数据。现在考虑您要转到另一个页面,您将如何保证计时器将停止(因为在第二页上不需要它)。
我会这样实现它:
App.jsx
onClickNavigateToPageA: function() { AppActions.goToA(); }
AppActions.js
goToA: function() {
DispatchActionToLoadComponentPageA();
DispatchActionToStartTimer();
}
现在我点击进入页面B。如何告诉计时器停止?如果我在 componentWillUnmount 上执行此操作(我相信是通过操作),我将在操作期间调度操作(加载页面 B 的操作),所以这是错误的。
正确的方法是在加载页面 A 之后立即注册一个回调(这将调用一个操作来禁用计时器),然后在加载任何其他页面时调用它?据我所知,商店现在不应该谈论用于从服务器获取数据的 api(包括计时器,它应该在动作创建者上)。
【问题讨论】:
标签: javascript reactjs flux