react-native - 在 react 导航中动态更改 DrawerNavigator 的 drawerPosition 配置

标签 react-native react-redux react-navigation

我的主要路线有一个 DrawerNavigator 配置

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',
})

我想根据应用程序的当前语言更改 drawerPosition 属性。 我已经尝试连接到 redux 但没有成功,因为它会为无效的 React 元素抛出错误。 如何即时更改 drawerNavigator 属性?

最佳答案

我最终得到了一个不太优雅的解决方案。

我复制了react-navigation的DrawerNavigator添加到我的项目中。

无法正常工作的导入被修复为指向原始的 react-navigation 项目,我在 DrawerView 组件的 drawerPosition 属性上实现了应用程序逻辑

 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)

关于react-native - 在 react 导航中动态更改 DrawerNavigator 的 drawerPosition 配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46303188/

相关文章:

ios - 无法连接 native 到本地主机

react-native - FlatList 在 Android 上的 BottomSheet 中不起作用

javascript - AutoFocus 下一个 TextInput onChangeText 崩溃

javascript - Redux 工具包 : state showing as Proxy/undefined within reducer

react-native - 在 React Native 中获得右侧的抽屉导航菜单

javascript - 在 react native 中将值从一个文件导入到另一个文件时出现问题

reactjs - 如何从 React 组件调用选择器函数?

reactjs - 在 AsyncStorage 或 redux 中存储全局数据的最佳方式?

react-native - 将 React-Navigation v5 与 Redux 和 Firebase 身份验证结合使用

reactjs - 如何在 typescript 中使用 react-navigation 的 withNavigation?