нужно вернуть значение из асинхронного хранилища - PullRequest
0 голосов
/ 02 ноября 2018

Здравствуйте, разработчики, я использую 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', поэтому, если ключ равен 'true', он сначала открывает AppIntroScreen, иначе он сначала открывает экран ChooseLanguage, поэтому, пожалуйста, помогите!

Ответы [ 2 ]

0 голосов
/ 02 ноября 2018

вы не можете использовать приложение AppRegistry так, чтобы оно не распознавало экраны или навигацию. Создайте новый экран с именем entry в асинхронном компоненте, который при монтировании запустил вашу функцию await retrieve и, исходя из этого, перешел к нужному экрану.

0 голосов
/ 02 ноября 2018

Вы можете использовать await для обработки асинхронной операции.

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

Ваше решение также кажется верным, выполните код на then заявлении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...