2017-09-19 2 views
2

Ich habe eine DrawerNavigator Config für meine HauptroutenDynamisch drawerPosition Config von DrawerNavigator in reagieren-Navigation

const App = DrawerNavigator(DrawerRoutes, { 
    initialRouteName: 'Main', 
    contentComponent: ({ navigation }) => <DrawerMenu navigation={navigation} routes={DrawerRoutes} />, 
    mode: Platform.OS === 'ios' ? 'modal' : 'card', 
    drawerWidth: Dimensions.get('window').width - (Platform.OS === 'android' ? 56 : 64), 
    drawerPosition: 'left', 
}) 

Ich möchte in Abhängigkeit der drawerPosition Eigenschaft ändern auf die aktuelle Sprache der Anwendung. Ich habe bereits versucht, eine Verbindung zu Redux ohne Erfolg herzustellen, da es einen Fehler für ungültiges React-Element auslöst. Wie kann ich die Eigenschaften von drawerNavigator im laufenden Betrieb ändern?

Antwort

1

Ich endete mit einer nicht so eleganten Lösung.

Ich habe den DrawerNavigator von react-navigation kopiert und zu meinem Projekt hinzugefügt.

Die Einfuhren, die ordnungsgemäß auf das ursprünglichen reagieren-Navigationsprojekt Punkt nicht in Betrieb waren wurden fixiert und ich implementiert, um die Anwendungslogik auf der drawerPosition Eigenschaft auf der DrawerView Komponente

const Drawer = I18nReader()(
({ i18n, ...restProps }) => 
    <DrawerView 
    {...restProps} 
    useNativeAnimations={useNativeAnimations} 
    drawerWidth={drawerWidth} 
    contentComponent={contentComponent} 
    contentOptions={contentOptions} 
    drawerPosition={i18n.rtl ? 'right' : 'left'} 
    /> 
) 

const navigator = createNavigator(
    drawerRouter, 
    routeConfigs, 
    config, 
    NavigatorTypes.DRAWER 
)(Drawer) 
Verwandte Themen