私は現時点でReact NativeとReact Navigatorでロープを習っています。私はDRY(自分自身を繰り返さないでください)テクニックを実装したいと思っている開発の何かに出くわしました。React-Navigator要素をリファクタリングすることは可能ですか?
は、ここに私のコンポーネントのコードです:
export default class App extends React.Component {
render() {
const MainNavigator = TabNavigator({
welcome: { screen: WelcomeScreen },
auth: { screen: AuthScreen },
main: {
screen: TabNavigator({
map: { screen: MapScreen },
deck: { screen: DeckScreen },
review: {
screen: StackNavigator({
review: { screen: ReviewScreen },
settings: { screen: SettingsScreen }
})
}
}, {
tabBarPosition: 'bottom',
lazyLoad: true,
animationEnabled: false,
swipeEnabled: false
})
}
}, {
tabBarPosition: 'bottom',
lazyLoad: true,
animationEnabled: false,
swipeEnabled: false
});
return <MainNavigator />;
}
}
あなたが見ることができるように、私は繰り返し次のコードの塊を持っている:
tabBarPosition: 'bottom',
lazyLoad: true,
animationEnabled: false,
swipeEnabled: false
私はあなたがスタイルをするだろうと同じようにリファクタリングしてみましたこのようなコンポーネントを反応させよう:
export default class App extends React.Component {
render() {
const MainNavigator = TabNavigator({
welcome: { screen: WelcomeScreen },
auth: { screen: AuthScreen },
main: {
screen: TabNavigator({
map: { screen: MapScreen },
deck: { screen: DeckScreen },
review: {
screen: StackNavigator({
review: { screen: ReviewScreen },
settings: { screen: SettingsScreen }
})
}
}, { defaultTabStyles })
}
}, { defaultTabStyles });
return <MainNavigator />;
}
}
const defaultTabStyles = {
tabBarPosition: 'bottom',
lazyLoad: true,
animationEnabled: false,
swipeEnabled: false
};
ご覧のとおり、これははるかにクリーンなやり方ですそれがうまくいくかどうか。しかし、それはうまくいかないので、これを正しくリファクタリングする方法があるのでしょうか、私のオリジナルの実装に固執する必要がありますか?