2017-02-22 3 views
7

ちょっと混乱していることの1つは、ルート名とキーの違いと、なぜあなたが相手を使うかということです。そして、重複したルート名がどのように処理されるか。反応ナビゲーションでrouteNameとkeyの違いは何ですか?

https://reactnavigation.org/docs/navigators/navigation-prop

これは、あなたが画面に移動しrouteNameを使用し、keyであることをことを言う「のルートをソートするために使用される一意の識別子。」どういう意味ですか?

外側のタブと内側のスタックの両方が同じルート名を持っているので、私の例に示すようにルート名がユニークである必要はないようです。ナビゲート機能を使用するときは、ルート名を渡しますか?もしそうなら、ネストされたナビゲータの重複したルート名と、キーをいつ代わりに使うのかはどのように区別されますか?

 export TabsNavigator = TabNavigator({ 
      Home: { 
      screen:StackNavigator({ 
       Home: { screen: HomeScreen }, 
      }), 
      }, 
      Profile: { 
      screen: StackNavigator({ 
       Profile: { ProfileScreen }, 
      }), 
      }, 
     }); 

ドキュメントには、キーを設定する例がありますが、私はそれをやろうとしているものの文脈を理解することはできません、またはなぜあなたは本当のユースケースでそれを行うだろう。あなたは、画面を表示する/開くことナビゲーター(例えばStackNavigator)に指定された画面の名前を使用し https://reactnavigation.org/docs/navigators/navigation-prop

import { NavigationActions } from 'react-navigation' 

const setParamsAction = NavigationActions.setParams({ 
    params: {}, // these are the new params that will be merged into the existing route params 
    // The key of the route that should get the new params 
    key: 'screen-123', 
}) 
this.props.navigation.dispatch(setParamsAction) 

答えて

1

。各画面には固有の識別子があり、これがキーです。例えば。同じタイプの2つの画面を開くと、同じルート名になりますが、異なるキーが表示されます。

this.props.navigation.dispatch(NavigationActions.setParams(params: {val: 'val'}, key: 'home-1'));を使用すると、画面のナビゲーション状態をキー'home-1'で更新できます。例えば。ホーム画面上部にStackNavigatorと設定画面がある場合、ホーム画面のナビゲーション状態(this.props.navigation.state.params)を設定画面から更新することができます。

+3

NavigationActionsを使用していない場合はどこでキーを指定しますか? StackNavigatorのルート定義にありますか? – vijayst

+1

ユニークキーを設定する場所は?それは画面ごとまたはナビゲータごとですか? Docsはキーでかなり悪いです... – CoredusK

関連する問題