My React Component хранит пользовательские настройки в AsyncStorage и получает их при загрузке. Хранение и получение данных работают хорошо, но есть проблема, которую компоненты обрабатывают до того, как значения были получены из асинхронной функции. Как это можно было исправить? Это мой код:
import React from 'react';
import { View } from 'react-native';
import AsyncStorage from '@react-native-community/async-storage';
import { Media } from '../constants';
class SettingsScreen extends React.Component {
constructor(props) {
super(props);
const settings = ['appLanguage', 'colorTheme'];
for(const i of settings) {
this.getData(i).then(
value => {
if(value === null || value === undefined) {
this.state[i] = Media.initalSettings[i];
}
else {
this.state[i] = value;
}
}
);
}
}
async storeData(key, value) {
try {
if(key[0] != '@') {
key = '@' + key;
}
await AsyncStorage.setItem(key, value);
}
catch(e) {
console.warn(e);
}
}
async getData(key) {
try {
if(key[0] != '@') {
key = '@' + key;
}
const value = await AsyncStorage.getItem(key);
return value;
}
catch(e) {
console.warn(e);
}
}
render() {
const { appLanguage } = this.state;
return (
<>
<View>
{appLanguage}
</View>
</>
)
}
}
export default SettingsScreen;
this.state[i] = Media.initalSettings[i]
перед вызовом функции async, но ничего не изменилось - person anDev   schedule 29.07.2020this.state[i] = value
наthis.setState({key: value})
после получения данных, и он работал правильно. Вы можете написать ответ, и я отмечу его как решение - person anDev   schedule 29.07.2020