Jor*_*ran 13 javascript reactjs redux
我们有一个ReactNative应用程序,它使用redux,redux-persist和HeadlessJS任务.此任务需要访问商店.由于任务在没有启动整个应用程序的情况下触发(因此默认情况下没有访问权限),我们认为我们可以简单地在任务中创建商店,以便它可以通过redux-persist重新水合.然而,事实证明,以这种方式创建的商店与应用程序中的商店不同:运行后,它们包含不同的值.我们用几种方式对它进行了测试,看起来确实是商店的问题(而不是例如动作)我们应该如何从HeadlessJS任务访问Redux商店?
相关代码
store/configure.js:
configureStore = (client) => {
const middleware = createMiddleware(client);
const finalCreateStore = applyMiddleware(thunk, middleware, logger)(createStore);
const store = finalCreateStore(rootReducer, undefined, autoRehydrate());
return store;
};
Run Code Online (Sandbox Code Playgroud)
在使用中(在应用程序和服务中):
const client = new ApiClient();
const store = configureStore(client);
client.setStore(store);
persistStore(store, {
storage: AsyncStorage,
}
Run Code Online (Sandbox Code Playgroud)
在应用程序中,我们只使用react-reactx中的Provider来使用store,在我们使用store.dispatch的服务中.
只需在任务中创建存储,以便它可以通过 redux-persist 重新水化。
这确实发生了。
您创建了两个商店(不建议使用 redux),它们都是 Hydro,但没有链接,因为不存在链接的 redux 商店之类的东西。每次运行 createStore 时,都会创建一个新商店。每次发货时,您都会在特定的商店进行发货。
不幸的是,redux 并不能直接解决异步或多线程问题。
不过,使用中间件和/或存储侦听器可以使两个存储保持同步。
但 redux 也不是线程之间通信的方式(我假设这些任务是这样,或者您可以在创建任务后为其提供对存储的引用,或者为主应用程序提供任务中的存储引用)。
它更像是命令-查询-分离和集中状态的一种形式。
| 归档时间: |
|
| 查看次数: |
1164 次 |
| 最近记录: |