0

私は単純ですDrawerNavigatorには複数のStackNavigatorが含まれています。headerStyle、HeaderTitleStyleなどを設定する共通の場所はありますか

私の問題は、私はすべてのために同じになります「navigationOptions」の「StackNavigator」

const DrawerMainRoutes = DrawerNavigator({ 
    Stack1: { screen: Stack1 } 
    Stack2: { screen: Stack2 } 
    Stack3: { screen: Stack4 } 
}) 


const Sack1 = StackNavigator({ 
    Stack1: { 
    screen: View 
    }, 
    navigationOptions: { 
    headerStyle: 'Blue', 
    headerTitleStyle: { color: '#fff', }, 
    headerTintColor: '#fff', 
    headerLeft: <MenuIcon /> 
    } 
}) 

を設定していているが、このnavigationOptionsすべてのStackNavigator

のための共通の

答えて

1

設定し、より良い方法はありますnavigationOptionsは別の変数で定義し、再利用することができます。

const navigationOptions = { 
    headerStyle: 'Blue', 
    headerTitleStyle: { color: '#fff', }, 
    headerTintColor: '#fff', 
    headerLeft: <MenuIcon /> 
} 

const Sack1 = StackNavigator({ 
    Stack1: { 
    screen: View 
    }, 
    navigationOptions 
}) 

const Sack2 = StackNavigator({ 
    Stack2: { 
    screen: View 
    }, 
    navigationOptions 
}) 

... 

または、StackNavigator作成関数を作成することができます。

const createStackNavigator = (routeOptions) => 
    StackNavigator(routeOptions, { 
    navigationOptions: { 
     headerStyle: 'Blue', 
     headerTitleStyle: { color: '#fff', }, 
     headerTintColor: '#fff', 
     headerLeft: <MenuIcon /> 
    }) 

const Stack1 = createStackNavigator({ Stack1: { screen: View } }) 
const Stack2 = createStackNavigator({ Stack2: { screen: View } }) 
.... 
+0

答えはありがたいですが、問題は同じです。 「Stack1」に5つの画面が含まれているとします。 5つの画面すべてに「navigationOptions」というペーストをコピーする必要があります。他のスタックとも同じです。 – rajat

+1

StackNavigatorにはStackNavigatorConfigという2番目の引数があります。これは辞書です。デフォルトの設定でnavigationOptionsキーを定義することができ、スタック内のすべての画面に適用されます。 – Zsolt

関連する問題