使用React-Native-Background-Fetch的Redux-Persist

时间:2019-05-13 20:08:05

标签: react-native redux-persist

我正在创建一个React-Native应用,该应用从API提取数据作为后台服务。

如果可以使用后台任务期间获取的数据手动为商店补水,但我什么也没找到。

是否有可能从后台“服务”任务中为应用程序被杀死时的redux-persist商店手动补水?

1 个答案:

答案 0 :(得分:0)

对于仍在怀疑的人们,如果可以使用react-native-background-fetch来调度ANY任务,那么只要它不触及UI,就可以了。 (AsyncStorage,Redux-Persist,Realm,DB ...)与在UI中调用更改没有直接关系,因此完全可以使用。

在我的特定情况下,我使用最慢的选项-AsyncStorage-持久保存我在全局App级别上使用的props对象,并将派生的数据传递到我的组件上。

// Example of HeadlessTask implementation

import BackgroundFetch from 'react-native-background-fetch'
import AsyncStorage from '@react-native-community/async-storage';

const HeadlessTask = async () => {

    // Prepare data - fetching from API, other transformations...
    let propsObject = {};

    AsyncStorage.setItem(ITEM_KEY, JSON.strigify(propsObject))
        .then(() => {
            console.log('[AsyncStorage] Object Saved!');
            // For iOS specifically we need to tell when the service job
            // is done.
            BackgroundFetch.finish();
        })
        .catch((e) => {
            console.log('[AsyncStorage] Error saving object: ', e);
            BackgroundFetch.finish();
        });
}

P.S。请参阅https://github.com/transistorsoft/react-native-background-fetch,以了解如何安装和实现后台提取。