需要从异步存储返回值

时间:2018-11-02 10:41:06

标签: react-native asyncstorage

您好,我正在使用AsyncStorage来响应本机 我用这种方式:

const AppLanguage = createStackNavigator({
    ChooseLanguage: {
        screen: ChooseLanguage,
    },
    AppIntroScreen: {
        screen: AppIntroScreen,
    },
}, {
        headerMode: 'none',
        cardStyle: {
            backgroundColor: "#ffffff",
        },
        navigationOptions: {
            headerVisible: false,
        }
    });

retrieve = () => AsyncStorage.getItem('first').then(value => {
    return value;
});

console.log(retrieve()) //return promise but need to extract value from asyncstorage

AppRegistry.registerComponent(appName, () =>
    retrieve() == 'true' ? AppIntroScreen:AppLanguage //problem here value not extracted from asyncstorage
)

这里我正在使用retreive方法来获取key ='first'的值,因此,如果key等于'true',则首先打开AppIntroScreen,否则首先打开ChooseLanguage屏幕,所以请帮助!

2 个答案:

答案 0 :(得分:3)

您可以使用await处理异步操作。

var value = await AsyncStorage.getItem('first');
console.log(value);

您的解决方案似乎也有效,请在then语句中执行代码。

答案 1 :(得分:1)

您无法使用无法识别屏幕或导航的应用程序AppRegistry。 在asynccomponent中创建一个名为entry的新屏幕,它确实挂载了您的await检索功能,并根据该导航到右侧屏幕。