2016-07-12 9 views
0

シーンによって渡されたパラメータでnavigationBarを更新する方法はありますか?私のシーンではなく私が見つけた方法で私が意味する、私はそのような名前、背中、次のボタンのテキストとしてのparamsを通過したい:私は、タイトルとしての私のナビゲーションバーののparamsに渡すリアクションネイティブ:シーン別navigatiorBarを更新

this.props.navigator.push({ name: 'Second', component: Second });

ありがとうございます。

答えて

0

Navigator.NavigationBarrouteMapper小道具を使用してこれを行うことができます。 routeMapperは、LeftButton,Title、およびRightButtonという3つの関数を定義するオブジェクトです。ナビゲーションバーは、レンダリングする対象を決定するためにこれを使用します。これらの機能のそれぞれは、4つの引数を受け取り:

  • ルートオブジェクト
  • ナビゲータコンポーネント
  • 電流経路スタックナビゲータコンポーネントの
  • 電流navStateルートオブジェクトのインデックス

たとえば、左右のボタンのテキストとタイトルをカスタマイズできるナビゲーションバーを作成する場合は、次のような操作を行うことができます。

const NavigationBarRouteMapper = { 
 

 
    LeftButton(route, navigator, index, navState) { 
 
    if (route.leftButtonText && route.leftButtonHandler) { 
 
     return (
 
     <TouchableOpacity 
 
      onPress={route.leftButtonHandler} 
 
     > 
 
      <Text>{route.leftButtonText}</Text> 
 
     </TouchableOpacity> 
 
    ); 
 
    } 
 
    return null; 
 
    }, 
 

 
    RightButton(route, navigator, index, navState) { 
 
    if (route.rightButtonText && route.rightButtonHandler) { 
 
     return (
 
     <TouchableOpacity 
 
      onPress={route.rightButtonHandler} 
 
     > 
 
      <Text>{route.rightButtonText}</Text> 
 
     </TouchableOpacity> 
 
    ); 
 
    } 
 
    return null; 
 
    }, 
 

 
    Title(route, navigator, index, navState) { 
 
    if (route.title) { 
 
     return (
 
     <Text> 
 
      {route.title} 
 
     </Text> 
 
    ); 
 
    } 
 
    return null; 
 
    }, 
 
};

あなたのナビゲーションバーを作成するときは、routeMapper小道具にこのオブジェクトを渡すことができます。

<Navigator.NavigationBar 
    routeMapper={NavigationBarRouteMapper} 
/> 

そして、あなたが渡すことによって、例えば、新しいタイトルをレンダリングすることができますあなたの a titleプロパティ:

this.props.navigator.push({ 
    id: 'your-route-id', 
    title: 'Custom Title', 
}); 

ナビゲーションバーには、上記のようにrouteMapperオブジェクトにプッシュしているこのrouteオブジェクトが表示されます。

+0

私はすでにこれを知っています。私のシーンからタイトルのようなparamを渡すことができるかどうか聞いています。 –

+0

すみません。私はあなたを誤解しました。私はあなたのナビゲータ( 'this.props.navigator.props.navigationBar')への参照を保持することによってそれを行うかもしれないと思います。しかし、それはナビゲーションバーが実際にはナビゲータによって所有され、シーンによって所有されているわけではないという、私の意見では、非常に反するようなものです。壊れやすい別のコンポーネントの子を修正することになります。 –

+0

この所有権の問題は、実際にはRNプロジェクトの前に起こっています。 https://github.com/facebook/react-native/issues/2615 –

関連する問題