私のアプリはルーティングと画面遷移にNavigatorを使います。ナビゲーターがポップバックしたときにコンポーネントを更新するにはどうすればいいですか?
最初の画面には項目のリストがあります。ユーザーが項目をタップすると、詳細画面が開き、ユーザーはその項目を編集できます。
ユーザが編集を終了して戻ったとき(ナビゲータのpop()関数)、リストにはユーザが行った変更は反映されません。更新されたリストを表示するには、画面を再度ロードする必要があります。
ナビゲータのスタックにコンポーネントを強制的にアップデートする方法はありますか?
私はNavigatorの 'onWillFocus'小道具を使ってアプローチを試みましたが、私はconsole.logにルートを入れることができますが、経路によって表される画面への参照を取得して更新する。
これは正しく、我々はに移行しようとしているルートを記録します:
<Navigator
ref={(ref) => this._navigator = ref}
style={{flex:1}}
configureScene={() => Navigator.SceneConfigs.FadeAndroid}
renderScene={this.renderScene}
onWillFocus={this._onWillFocus}
/>
'ListView'の' render'を引き起こす状態変化はありませんか?存在しない場合、レンダリングがオブジェクトの突然変異に頼っていない限り、再レンダリングは効果を持たず、古いデータをレンダリングするはずです。これは '反応する '方法ではありません。 –
console.logをリスト画面の 'render'メソッドに入れると、ユーザーが画面に戻るときに実際に呼び出されていることが確認されます。私はちょっとしたことをやっていることに気付きました。データソースはgetInitialStateで一度しか定義されませんでしたが、コードをどこにでも置いて更新しませんでした。データが更新される唯一の方法は、コンポーネント全体がリロードされたときでした。 – amirfl