如何设置州"经理"监视和更新状态

时间:2018-01-25 02:54:29

标签: reactjs redux react-redux

我目前正在努力学习React / Redux的工作,并且一直致力于一个有趣的辅助项目 - 增量游戏。

作为我的应用程序的一部分,我需要设置某种组件(?),它将监视所有状态更改(由用户操作和内部时钟触发" tick")并将更新状态在达到某些阈值时。在大多数情况下,这个新状态将处理条件组件显示。

例如,我希望这个状态管理器能够处理像

这样的事情
if (state.clicks >= 10 && state.dragon { 
    // dispatch action to add state.dragonHunter to state
} else if (state.dragon && state.dragonHunter) {
    // dispatch action to add state.dragonBones to state
}
等等等等。在我添加所有阈值检查时,我想这个列表很长(100多行条件)。

我似乎无法理解的事情就是这样的东西属于我的应用程序,以及如何最好地设置它,以便在所有州调用管理器的主入口点更新,无论是什么导致状态更新(即使不需要重新渲染)。

很抱歉,如果这是非常基本的事情,或者我的问题还没有解决。正如我所说,我仍在学习,而且大多是自学成才。如果需要,我很乐意在可以的地方添加清晰度。

2 个答案:

答案 0 :(得分:0)

您可以使用更新生命周期方法componentDidUpdate。检查这里的状态和发送。

componentDidUpdate(prevProps, prevState){
    if (prevState.clicks >= 10 && prevState.dragon { 
    // dispatch action to add state.dragonHunter to state
    } else if (prevState.dragon && prevState.dragonHunter) {
    // dispatch action to add state.dragonBones to state
        }
    }

检查此link以获取有关生命周期方法的更多信息

答案 1 :(得分:0)

您必须在某处保留变量clicks。如果您希望在应用程序的生命周期内进行点击,那么您可以使用asyncstorage或数据库(例如领域),甚至可以将它们上传到服务器。 如果您只需要在运行单个应用程序实例期间保留它们而不必持久存储它们,只需将它们存储在静态变量中即可。 或者您可以使用redux将它们存储为全局状态对象。但是,如果您不希望每次点击更改时重新呈现您的应用,这可能会影响性能。 但是如果你坚持使用redux并且你不希望你的应用程序在点击更新时重新呈现,你可以在ComponentWillUpdate中看到它 然后,您可以使用if block与应用中希望了解点击次数的点的数字一样。

相关问题