我们有一个ReactNative应用程序,它使用了redux,redux-persist和HeadlessJS任务。该任务需要访问商店。由于任务在没有引导整个应用程序的情况下触发(因此默认情况下无法访问),我们认为我们可以简单地在任务内部创建存储,以便通过减少持久性来恢复它。然而,事实证明,以这种方式创建的商店与应用程序中的商店不同:在运行之后,它们包含不同的值。我们通过几种方式测试了这一点,看起来的确是商店的问题(而不是动作) 我们应该如何从HeadlessJS任务访问Redux商店?React Native:HeadslessJS和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;
};
在使用中(无论是在应用程序和服务):
const client = new ApiClient();
const store = configureStore(client);
client.setStore(store);
persistStore(store, {
storage: AsyncStorage,
}
在应用中,我们简单地使用从反应-终极版的提供者在我们使用store.dispatch的服务中使用商店。
对于未来的搜索者:由于我们无法在合理的时间范围内工作,我们选择了基于非商店的解决方案来交换应用程序和无头任务之间的信息。我们使用AsyncStorage,它可以在应用程序和任务之间可靠地工作。 – Joran
我偶然发现了音频播放器应用程序的相同问题。来自音频播放器的事件仍然应该将更改发送到Redux商店,即使它位于后台。 – fraherm