[解決済み] React ナビゲーション goBack() と親の状態の更新
2023-03-25 23:30:01
質問
ログインしている場合はユーザー名を表示し、ログインしていない場合は「アカウント作成」「サインイン」のオプションを表示するページを作成しました。以下のような画面です。
ユーザは、[サインイン]または[アカウント作成]ページに移動することができます。サインインまたは登録に成功すると、このページが表示され、ユーザー名が表示されます。以下のような画面です。
現在、私はユーザーデータを
AsyncStorage
に保存していますが、ユーザーがログインまたは登録に成功すると、ページからのリダイレクト時にこのフィールドを更新したいのです。
どのように私はこれを実現することができますか?
からパラメータを渡す方法はありますか?
navigate.goBack()
からパラメータを渡し、親はそのパラメータを聞いて状態を更新することができるのでしょうか?
どのように解決するのですか?
このように、navigateを呼び出す際に、コールバック関数をパラメータとして渡すことができます。
const DEMO_TOKEN = await AsyncStorage.getItem('id_token');
if (DEMO_TOKEN === null) {
this.props.navigation.navigate('Login', {
onGoBack: () => this.refresh(),
});
return -3;
} else {
this.doSomething();
}
そして、コールバック関数を定義します。
refresh() {
this.doSomething();
}
そして、ログイン/登録のビューで、goBackの前に、次のようにします。
await AsyncStorage.setItem('id_token', myId);
this.props.navigation.state.params.onGoBack();
this.props.navigation.goBack();
React Navigation v5用のアップデートです。
await AsyncStorage.setItem('id_token', myId);
this.props.route.params.onGoBack();
this.props.navigation.goBack();
関連
-
[解決済み] React NativeとReactの違いは何ですか?
-
[解決済み] React Native - StyleSheetを使用する利点は、プレーンなオブジェクトと比較して何ですか?
-
[解決済み] React-Nativeは最初の文字が大文字でないものを書けない
-
[解決済み] TouchableNativeFeedback、TouchableHighlight、TouchableOpacityをいつ使うか?
-
[解決済み] Androidのフラットリスト(React Native)でスクロールバーを隠す
-
[解決済み] React Nativeのエラー。"javaのバージョンを'9.0.1'から決定できませんでした。"
-
[解決済み] React Nativeのスタイルはグラデーションをサポートしていますか?
-
[解決済み] React Nativeで「リモートデバッガがバックグラウンドのタブにある」という警告を消す。
-
[解決済み] Error: Unable to resolve module `react-native-gesture-handler`.
-
[解決済み] React Nativeのプロジェクト名を変更しますか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] React Nativeでアプリ名を変更する
-
[解決済み] TouchableNativeFeedback、TouchableHighlight、TouchableOpacityをいつ使うか?
-
[解決済み] React Nativeのグローバルスタイル
-
[解決済み] Androidのフラットリスト(React Native)でスクロールバーを隠す
-
[解決済み] React Nativeで電話をかけるには?
-
[解決済み] Xcode throws 'atomic_notify_one<unsigned long>' is unavailable
-
[解決済み] React Native Android ビルドエラー MainActivity.java:29: error: cannot find symbol
-
[解決済み] React Nativeで「リモートデバッガがバックグラウンドのタブにある」という警告を消す。
-
[解決済み] Error: Unable to resolve module `react-native-gesture-handler`.
-
[解決済み] React Native のフラットリスト、カラム、最後のアイテム幅