Условный экран в TabNavigator - PullRequest
0 голосов
/ 31 мая 2018

Мой роутер такой.Есть ли способ, где переменная скажет, какой экран должен отображаться?

export const HomeNavigator = TabNavigator({
    ...
    Search:{
        screen: usertype == 1? Customer : Handyman,
    },
    ...
});

export const RootStack = StackNavigator({
    Login: {screen: Login}
    Home:{screen: HomeNavigator},
    ...
},{
    headerMode: 'none'
});

export default RootStack;

После того, как пользователь войдет в свою учетную запись, приложение проверит его тип учетной записи.Затем его тип учетной записи скажет, какой экран должен отображаться на вкладке Поиск :

, если тип учетной записи пользователя равен 1 , экран, который должен отображаться customer.js

, если тип учетной записи пользователя равен 2 , на экране должно появиться Handyman.js

1 Ответ

0 голосов
/ 31 мая 2018

Я покажу вам рабочий процесс моего пакета, и не стесняйтесь спросить, если вы все еще путаете,

в router.js (экран обработки):

const Tab =  TabNavigator({
  Customer : {
    screen: Customer,
  }
});

const TabLogged =  TabNavigator({
  Handyman: {
    screen: Handyman,
  }
});
// here's the key to handle which account is logged
export const Check = SwitchNavigator({
  Auth: Auth,
  Account1: Tab,
  Account2: TabLogged
})

create Auth.jsчтобы проверить, какая учетная запись зарегистрирована:

..import

class foo extends React.component{
  componentWillMount(){
    this.props.navigation.navigate(usertype == 1 ? 'Account1' : 'Account2');
  }

  render(){
    <View>
      <ActivityIndicator size="large" color="#0000ff" />
      <StatusBar barStyle="default" />
    </View>
  }
}

и в вашей app.js или index.js:

..import check variable from router.js

class app extends Component{
  render() {
    return <check/>;
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...