0

小道具、パラメータ、または州に応じて、StackNavigatorで別の画面をレンダリングすることはできますか?小道具に応じてスタックナビゲータ内の異なる画面を条件付きでレンダリングする方法

私は以下のようなことを考えていましたが、現時点では、stackNavigatorが画面のパラメータを超えてスコープを持つようにする方法を考えることができません。

export const MainNavigation = StackNavigator({ 
    Interests: { 
    screen: navigation.state.params.interests ? InterestsScreen : ChooseInterestsScreen, 
    }, 
    Home : { 
    screen: HomeTab, 
    }, 
}, { 
    mode: 'modal', 
    headerMode: 'none', 
}); 

誰にでもこれについてのアイデアはありますか?ありがとう!!

答えて

0

あなたはそのrenderメソッドの内部で、this.props.navigation.state.params.interestsが存在し、値が含まれているかどうかを確認するためにチェックを行うように、あなたのInterestsScreenコンポーネントにその条件付きレンダリングロジックを転送し、そうでない場合は、としてChooseInterestsScreenの修正版が表示されますモーダル。

0

代わりに条件付きのコンポーネントをscreenに適用すると、必要なパラメータに従って条件付きでレンダリングするコンテナコンポーネントを持つことができます。

const InterestsContainer = (props) => { 
    return (props.navigation.state.params.interests ? InterestsScreen : ChooseInterestsScreen); 
} 

export const MainNavigation = StackNavigator({ 
    Interests: { 
    screen: InterestsContainer, 
    }, 
    Home : { 
    screen: HomeTab, 
    }, 
}, { 
    mode: 'modal', 
    headerMode: 'none', 
}); 
+0

私はここで次のエラーを取得する:InterestsContainer(...):有効な要素(またはnull)と反応はリターンでなければなりません。未定義、配列またはその他の無効なオブジェクトを返した可能性があります。 – beddow

+0

エラーはかなり明確です。この例を実装する際には、おそらくエラーが発生します。あなたのエラーがどこにあるかを知るのは難しいです。 – bennygenel

関連する問題