使用react native在后台应用程序刷新中调度操作

时间:2017-08-10 12:50:01

标签: react-native redux

我正在使用react-native-background-fetch来接收应用刷新事件,并且在触发时一直在努力调度一个动作(获取数据)。我能够在redux之外做到这一点,但是当我发送动作时却没有。

BackgroundFetch.configure({
  stopOnTerminate: false
}, async () => {
  await store.dispatch(getItemsAction);
  BackgroundFetch.finish();
});

动作:

export function getItemsAction() {
  // <-- Reaches here
  return async (dispatch, getState) => {
    // <-- But not here
    const items = await findAll();
    dispatch(itemsRetrieved(items));
  }
}

如果不是解决方案,我想了解一下这里发生的事情。

2 个答案:

答案 0 :(得分:0)

首先,您需要调用动作创建者

await store.dispatch(getItemsAction());

然后,您需要一个中间件来处理函数作为操作。我假设你知道redux-thunk

答案 1 :(得分:0)

如果这是一项在后台运行的无头任务,则它无法从我的经验中访问redux存储。

当您以无头js方式运行任务时,您将要使用类似AsyncStorage(https://github.com/react-native-community/async-storage)的东西,这是在应用程序运行后台事件时发生的事情。