React native RTL和LTR抽屉导航根据用户语言在它们之间切换
如何添加从RTL到ltr以及从RTL到ltr的抽屉动态导航。 登录后进入主页面,在主页面上抽屉可以打开,但其位置取决于用户登录时选择的语言 app.jsReact native RTL和LTR抽屉导航根据用户语言在它们之间切换,react-native,react-router,react-redux,react-navigation,React Native,React Router,React Redux,React Navigation,如何添加从RTL到ltr以及从RTL到ltr的抽屉动态导航。 登录后进入主页面,在主页面上抽屉可以打开,但其位置取决于用户登录时选择的语言 app.js import React from 'react'; import TeaApp from './Pages/navigation'; export default class App extends React.Component { constructor(){ super();
import React from 'react';
import TeaApp from './Pages/navigation';
export default class App extends React.Component {
constructor(){
super();
this.state = {
name : '',
};
}
render() {
return (
<TeaApp/>
);
}
}
从“React”导入React;
从“/Pages/navigation”导入TeaApp;
导出默认类App扩展React.Component{
构造函数(){
超级();
此.state={
名称:“”,
};
}
render(){
返回(
);
}
}
导航
import React,{ Component } from 'react';
import { AsyncStorage, View, Text, Image, StyleSheet, Button, SafeAreaView} from 'react-native';
import { StackNavigator , SwitchNavigator, DrawerNavigator, DrawerItems,TouchableOpacity} from 'react-navigation';
import Login from './login';
import Mainpage from './mainPage';
import Menu from './menu';
import CustomizeOrder from './customizeOrder';
import Intro from './intro';
import PreviewOrder from './previewOrder';
import ViewOrder from './viewOrder';
const INTRO = StackNavigator({ Intro:{screen: Intro} });
const LOGIN = StackNavigator({ Login:{screen: Login} });
const REST = StackNavigator({
UserHome:{screen: Mainpage,navigationOptions:({navigation})=>({drawerLockMode:"locked-closed"})},
Menu:{screen: Menu,navigationOptions:({navigation})=>({drawerLockMode:"locked-closed"})},
customizeOrder:{screen: CustomizeOrder,navigationOptions:({navigation})=>({drawerLockMode:"locked-closed"})},
previewOrder:{screen: PreviewOrder,navigationOptions:({navigation})=>({drawerLockMode:"locked-closed"})},
viewOrder:{screen: ViewOrder,navigationOptions:({navigation})=>({drawerLockMode:"locked-closed"})},
});
const DrawerUserAR = DrawerNavigator(
{
الصفحة_الرئيسية :{screen: REST,navigationOptions:({navigation})=>({drawerLockMode:"locked-closed"})},
المطبخ :{screen: KitchenPage},
الطلبات:{screen: VIEWORDER},
تغيير_كلمة_المرور:{screen: ChangePassword},
تغيير_اللغة: {screen: ChangeLanguage}
//logout:{}
},
{
initialRouteName: 'الصفحة_الرئيسية',
drawerPosition: 'right',
contentComponent:(props) => (
<View style={{flex:1}}>
<Image
style={styles.drawerImage}
source={{uri:props.descriptors.الصفحة_الرئيسية.navigation.state.routes[0].params.content.company_logo_small}} />
<Text/>
<Text style={{textAlign:'center',fontSize:15,marginVertical:15}}>{props.descriptors.الصفحة_الرئيسية.navigation.state.routes[0].params.content.name}</Text>
<Text/>
<DrawerItems {...props} />
<Text/><Text/>
<Text/><Text/>
<Text/><Text/>
<Text/><Text/>
<Text/><Text/>
</View>),
drawerOpenRoute: 'DrawerOpen',
drawerCloseRoute: 'DrawerClose',
drawerToggleRoute: 'DrawerToggle'
}
);
const DrawerUserEN = DrawerNavigator(
{
Mainpage :{screen: REST,navigationOptions:({navigation})=>({drawerLockMode:"locked-closed"})},
Kitchen :{screen: KitchenPage},
viewOrder:{screen: VIEWORDER},
changePassword:{screen: ChangePassword},
changeLanguage: {screen: ChangeLanguage}
//logout:{}
},
{
initialRouteName: 'Mainpage',
drawerPosition: 'left',
contentComponent:(props) =>
(
<View style={{flex:1}}>
<Image
style={styles.drawerImage}
source={{uri:props.descriptors.Mainpage.navigation.state.routes[0].params.content.company_logo_small}} />
<Text/>
<Text style={{textAlign:'center',fontSize:15,marginVertical:15}}>{props.descriptors.Mainpage.navigation.state.routes[0].params.content.name}</Text>
<Text/>
<DrawerItems {...props} />
<Text/><Text/>
<Text/><Text/>
<Text/><Text/>
</View>),
drawerOpenRoute: 'DrawerOpen',
drawerCloseRoute: 'DrawerClose',
drawerToggleRoute: 'DrawerToggle'
}
);
export default SwitchNavigator(
{
intro:{screen: INTRO},
login:{screen: LOGIN},
rest:{screen: REST},
rest:{screen: /*drawer depending on the language that will get it from login*/},
},
{
initialRouteName: 'intro'
}
);
const styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: 'center',
alignItems: 'center'
},
drawerHeader: {
height: 200,
backgroundColor: 'white'
},
drawerImage: {
marginTop: 20,
height: 150,
width: 150,
borderRadius: 75,
alignSelf:'center'
}
})
import React,{Component}来自'React';
从“react native”导入{AsyncStorage,View,Text,Image,StyleSheet,Button,SafeAreaView};
从“react navigation”导入{StackNavigator、SwitchNavigator、DrumerNavigator、DrumerItems、TouchableOpacity};
从“./Login”导入登录名;
从“/Mainpage”导入主页面;
从“./菜单”导入菜单;
从“./CustomizeOrder”导入CustomizeOrder;
从“/Intro”导入简介;
从“/PreviewOrder”导入PreviewOrder;
从“/ViewOrder”导入ViewOrder;
const INTRO=StackNavigator({INTRO:{screen:INTRO}});
const LOGIN=StackNavigator({LOGIN:{screen:LOGIN}});
常量REST=StackNavigator({
用户主页:{屏幕:主页,导航选项:({navigation})=>({drawerLockMode:“锁定关闭”}),
菜单:{屏幕:菜单,导航选项:({navigation})=>({drawerLockMode:“锁定关闭”}),
自定义顺序:{屏幕:自定义顺序,导航选项:({navigation})=>({drawerLockMode:“locked closed”}),
预览者:{屏幕:预览者,导航选项:({navigation})=>({drawerLockMode:“锁定关闭”}),
viewOrder:{screen:viewOrder,导航选项:({navigation})=>({drawerLockMode:“locked closed”}),
});
常数paurerUserar=paurerAvigator(
{
屏幕:休息,导航选项:({navigation})=>({drawerLockMode:“锁定关闭”),
ا㶈㶈㶒{屏幕:厨房页面},
اغب㶎:{屏幕:视图顺序},
屏幕:更改密码,
(屏幕:更改语言)
//注销:{}
},
{
姓名首字母RouteName:“姓名首字母”,
抽屉位置:'对',
contentComponent:(道具)=>(
{props.descriptor.ا㶈㶈㶈㶈㶈㶈㶈㶈㶈㶈㶈㶈㶈㶈.navigation.state.routes[0].params.content.name}
),
DropeRopenRoute:“DropeRopen”,
抽屉关闭路线:“抽屉关闭”,
抽屉勾选:“抽屉勾选”
}
);
常数paurerUseren=抽屉驱动程序(
{
主页:{screen:REST,导航选项:({navigation})=>({drawerLockMode:“locked closed”}),
厨房:{屏幕:KitchenPage},
viewOrder:{屏幕:viewOrder},
更改密码:{屏幕:更改密码},
changeLanguage:{屏幕:changeLanguage}
//注销:{}
},
{
initialRouteName:“主页”,
抽屉位置:'左',
contentComponent:(道具)=>
(
{props.descriptor.Mainpage.navigation.state.routes[0].params.content.name}
),
DropeRopenRoute:“DropeRopen”,
抽屉关闭路线:“抽屉关闭”,
抽屉勾选:“抽屉勾选”
}
);
导出默认的SwitchNavigator(
{
简介:{屏幕:简介},
登录:{屏幕:登录},
rest:{screen:rest},
rest:{screen://*抽屉,具体取决于登录时使用的语言*/},
},
{
initialRouteName:“简介”
}
);
const styles=StyleSheet.create({
容器:{
弹性:1,
为内容辩护:“中心”,
对齐项目:“中心”
},
抽屉阅读器:{
身高:200,
背景颜色:“白色”
},
付款人:{
玛金托普:20,
身高:150,
宽度:150,
边界半径:75,
alignSelf:“中心”
}
})
________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________
import {I18nManager} from 'react-native'
import RNRestart from 'react-native-restart';
async changeAppLang(lang) {
if(lang == 'fa') {
if (!I18nManager.isRTL) {
await I18nManager.forceRTL(true);
}
} else {
if (I18nManager.isRTL) {
await I18nManager.forceRTL(false);
}
}
RNRestart.Restart()
}
npm install react-native-restart --save
react-native link react-native-restart
import {I18nManager} from 'react-native';
const drawer = createDrawerNavigator({
Main: Main
}, {
drawerPosition: I18nManager.isRTL ?'right':'left',
contentComponent: DrawerMenu
})