数え切れないほどの反応ナビゲーションドキュメントを読んだことがありますが、これはどういう方法があるのでしょうか?私は自明ではなく、間違いなく直感的ではないと呼ぶだろう。ナビゲーションスタックを同時にリセットするときに子スタックナビゲータから親に戻る方法React Native
私は、ルートナビゲーションスタックを持っている:
export const NavigationStack = StackNavigator({
Splash: {
screen: Splash
},
Signup: {
screen: Signup
},
Login: {
screen: SignIn
},
ForgottenPassword: {
screen: ForgottenPassword
},
Discover: {
screen: Discover
},
ProfileShow: {
screen: ProfileShow
}
}, {
headerMode: 'none'
})
ForgottenPassword画面が子供スタックナビゲーターである:そのindex.js
コンテナコンポーネントに
import { StackNavigator } from 'react-navigation'
import PasswordResetProcess from './index'
const ForgottenPassword = StackNavigator({
ResetPassword: {
screen: PasswordResetProcess
}
}, {
headerMode: 'none'
})
export default ForgottenPassword
、私はナビゲーションを渡すサブコンポーネントがありますこのように:
switch (lastCompletedStep) {
case NEW_RESET_REQUEST:
return <InputTel navigation={navigation} />
case INPUT_TEL:
return <ResetPassword navigation={navigation} />
これはですコンポーネントは問題のコンポーネントです。これは、アクションの作成者をトリガーとアクションの作成者にthis.props.navigation
を渡します。このアクションクリエーターの内側から
await props.handleResetSubmit(token, props.navigation)
、props.navigation
はnavigation
として利用可能です。
navigation.navigate('Discover') // see how this is from the root Navigation Stack
私は、しかし、これを行うことはできません:それは、このエラーをスロー
navigation.dispatch({
type: 'Navigation/RESET',
index: 0,
actions: [{ type: 'Navigate', routeName: 'Discover' }]
})
:私はこの罰金を行うことができます
はは は、[編集]私はちょうどこれを試してみましたし、それはまた、生成されました同じエラー:
navigation.dispatch(NavigationActions.reset({
index: 0,
actions: [NavigationActions.navigate({ routeName: 'Discover' })]
}))
How do I reset the stack while navigating to
Discover
from here?
答えは、何らかの子操作と同時にスタックを検出してリセットするように移動することですが、どこに配置するのかわかりません。 react-navigation
のドキュメントは、親から子への操作を説明するためには恐ろしいものです。ここで
は、それが約ように見えるしているもので、私の最高の推測です:
navigation.dispatch({
type: 'Navigation/NAVIGATE',
routeName: 'Discover',
actions: [{ type: 'Reset', index: 0, key: null }]
})
ダング、私は 'key:null'を追加して解決しました。私は以下の答えとしてそれを掲示するでしょう。 – agm1984