reactjs - react native - 如何根据应用程序语言更改抽屉位置?
问题描述
我正在使用本机反应和反应导航进行路由。我有英语和阿拉伯语的应用程序。当用户将英语切换为阿拉伯语时,我正在重新加载应用程序一切正常,只有抽屉位置没有改变。
我的代码是这样的:
export default App extends Component {
componentDidMount(){
AsyncStorage.getItem("lang").then(language => {
if(language == "ar"){
I18nManager.allowRTL(true);
}
})
}
render(){
return (
<AppContainer> </AppContainer>
)
}
}
const AppNavigator = createDrawerNavigator(
{
Home: HomeScreen,
Profile: ProfileScreen,
},
{
initialRouteName: "Home",
contentComponent: SideMenuScreen,
drawerPosition: "left"
}
);
const AppContainer = createAppContainer(AppNavigator);
如果语言是阿拉伯语,如何将抽屉位置向右更改?
解决方案
你可以尝试这样的事情:
const AppContainer = ({ position }) => {
const AppSide = createAppContainer(
createDrawerNavigator(
{
Home: HomeScreen,
Profile: SettingsScreen
},
{
initialRouteName: "Home",
// contentComponent: SideMenuScreen
drawerPosition: position
}
)
);
return <AppSide />;
};
export default class App extends Component {
state = {
position: "left"
};
componentDidMount() {
AsyncStorage.getItem("lang").then(language => {
if (language == "ar") {
I18nManager.allowRTL(true);
this.setState({
position: "right"
});
} else {
this.setState({
position: "left"
});
}
});
}
render() {
return <AppContainer position={this.state.position}> </AppContainer>;
}
}
推荐阅读
- javascript - 展开所有文本区域,无需单击每个区域
- c++ - CMake find_package 用于非标准位置
- python - Python Selenium - 下拉菜单
- azure - 如何在调用后端之前在 Azure API 管理中添加自定义标头
- graphics - 控制交换链当前调用频率的正确方法是什么?
- .net - 在 Microsoft Teams 上共享主窗口时,透明子窗口呈现为黑色
- python - Python if-else - 条件错误处理
- arrays - 打字稿说即使数组保证包含元素,array.pop() 也可能返回 undefined
- java - Spring Boot - CORS 过滤器适用于 GET,但不适用于其他 HTTP 动词
- node.js - 我的请求正文没有(?)进入我的应用程序