Похоже, ваша логика вышла из строя. В настоящее время ваша постоянная логика вызывается (в componentWillMount()
) перед логикой приращения (в componentDidMount()
).
Это означает, что;
- ваш компонент запускает
componentWillMount()
, где он сохраняет значение 0
(взятое из исходного состояния) в ключ myKey
через AsyncStorage.setItem()
- после этого, следующий крюк жизненного цикла;
componentDidMount()
уволен. Здесь вы загружаете значение для myKey
через AsyncStorage.getItem()
(которое было установлено на 0
) и увеличиваете его до 1
.
Чтобы решить эту проблему, рассмотрите возможность пересмотра вашего компонента, чтобы логика загрузки, приращения и сохранения значения myKey
содержалась в ловушке componentDidMount()
жизненного цикла, как указано в коде и комментариях ниже:
export default class App extends Component {
constructor() {
super();
this.state = {
myKey: 0
}
}
componentDidMount() {
AsyncStorage.getItem('myKey').then((value) => {
// Parse value which is a string to number so
// that arithmetic can be performed in a safe
// and predictable way
value = parseInt(value);
// If invalid parse result, default first value
// to zero
if(isNaN(value)) {
value = 0;
}
// Update state
this.setState({'myKey': value});
// Add this to persist the incremented value for
// use on next launch. Format value as string with
// "back ticks"
AsyncStorage.setItem('myKey', `${value}`);
});
}
render() {
return (
<View>
<Text>Hello World</Text>
<Text>${ this.state.myKey }</Text>
</View>
);
}
}