【发布时间】:2020-01-07 20:45:03
【问题描述】:
我有一个用 React Native 制作的移动应用程序,我刚刚遇到了一个在使用 Redux/Redux Saga 时多次遇到的最佳实践困境。如果我能得到别人对此的想法,我会很高兴。
对于我正在实施的一项新功能,我需要能够知道应用程序已启动了多少次。这涉及异步检索应用程序先前从设备存储启动的次数。如果有新的发布,我还需要在号码上加上 +1 并将其存储在设备存储中。
这是我目前的做法:
在应用启动时调度 appLaunched() 操作。
Redux Saga 发生事件。
Inside Saga:从设备存储中检索应用程序之前启动的次数 (appLaunchCount)(等待异步完成)。
为之前的 appLaunchCount 添加 +1。
在设备存储中存储新的 appLaunchCount(等待异步完成)。
将新 appLaunchCount 的 put() 发送到 reducer。
使用 reducer 内的新 appLaunchCount 更新状态。
我对这种方法的问题是第 6 步。从技术上讲,我的应用程序的任何部分都可以向我的减速器发送一个新的应用程序启动计数,使用任何整数,并且减速器会更新相同的状态,即使它没有出现来自传奇。
我的问题是:如何保护我的 Reducers/Sagas/Actions,以便只有我的 saga 可以使用当前 appLaunchCount 调度操作?
P.S 我能想到的唯一解决方案是将我的 saga 和 reducer 写在同一个文件中,并使用只有 saga 和 reducer 才能访问的私有操作。不过,我真的很讨厌将所有这些代码放在一起。
【问题讨论】:
标签: react-native redux react-redux redux-saga