J'ai suivi l'exemple de documentation sur AsyncStorage:AsyncStorage ne pas enregistrer l'état de changement - React natif
React Native - AsyncStorage docs
. donc, j'ai mis mon code:
var STORAGE_KEY = '@AsyncStorageExample:key';
et je définir ma classe avec cette fonction:
J'ai un état initial:
state={
defineValor: 0,
};
et la fonction componentDidMount
et _loadInitialState
:
componentDidMount() {
this._loadInitialState().done();
};
_loadInitialState = async() => {
try {
var value = await AsyncStorage.getItem(STORAGE_KEY);
if (value !== null){
this.setState({defineValor: value});
alert('Recovered selection from disk: ' + value);
} else {
alert('Initialized with no selection on disk.');
}
} catch (error) {
alert('AsyncStorage error: ' + error.message);
}
};
Donc je en fonction de changer l'état avec AsyncStorage, ainsi que dans la documentation:
changeState =() => {
this.setState ({
defineValor: 1
});
try {
AsyncStorage.setItem(STORAGE_KEY, this.state.defineValor);
alert('Saved selection to disk: ' + this.state.defineValor);
} catch (error) {
alert('AsyncStorage error: ' + error.message);
}
};
Alors, quand j'ouvrir l'application, tout le long du processus, alerte « Initialisé sans sélection sur le disque » et quand je l'appelle ma fonction changeState
, il est en alerte "Sélection enregistrée sur le disque: 1". Mais quand je ferme de l'application et rouvre, l'état n'a pas été sauvé, et il est alerte "Initialisé avec aucune sélection sur le disque.". Qu'est-ce que je fais mal?
probablement AsyncStorage définit la valeur avant l'état defineValor est mis à jour. setState dispose d'une fonction de rappel. Faites en sorte que le setItem AsyncStorage soit activé dans ce rappel. – Hariks