問題タブ [asyncstorage]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - React-native: ストレージからデータを取得する前にビューをレンダリングする
ユーザーがログインしていない場合はサインイン コンポーネントをレンダリングしようとしています。ユーザーがログインしている場合は、ホームコンポーネントをレンダリングしようとしています。サインインコンポーネントで Storage 'isLIn'を' true'に設定サインアウト時に [ホームコンポーネントから] Storage 'isLIn'を' false'に設定し、React-Native アプリが開くたびに Storage をチェックし、State を Storage の値として設定します。
コードを見てください:
理由はわかりませんが、ストレージが値を取得する前にレンダリングを最初に表示します。React_Docが言う ように、react-native render()のライフサイクルによると、 componentWillMount()の後にのみ実行され ます。
AsyncStorageを使用してストレージの設定と削除を行い、ルーティングにはReact-Native-Router-Fluxも使用しています。
私は解決策を試しました:
javascript - AsyncStorage は変更状態を保存しません - React Native
AsyncStorage に関するドキュメント サンプルに従いました。
React Native - AsyncStorage ドキュメント
. だから、私は自分のコードを実装しました:
var STORAGE_KEY = '@AsyncStorageExample:key';
そして、私はこの関数でクラスを定義します:
私は初期状態を持っています:
componentDidMount
関数と_loadInitialState
:
そこで、AsyncStorage とドキュメントで状態を変更する関数を作成しました。
したがって、アプリを開くと、すべてのプロセスが実行され、「ディスク上に選択なしで初期化されました」というアラートが表示され、関数changeState
を呼び出すと、「ディスクに選択が保存されました: 1」というアラートが表示されます。しかし、アプリを閉じて再度開くと、状態が保存されず、「ディスク上で選択されていない状態で初期化されました。」というアラートが表示されます。私は何を間違っていますか?