React Native + react-native-router-flux: как применить hideNavBar только к одной ‹Scene/›?

В React Native с использованием react-native-router-flux у меня есть два <Scene/>, и когда я применяю hideNavBar к первому, Login, это также применяется ко второму, Home, даже если они находятся на одном уровне. Как я могу применить hideNavBar только к одному <Scene/>, Login?

const RouterWithRedux = connect()(Router)
const store = configureStore()

export default class App extends Component {
  render() {
    return (
      <Provider store={store}>
        <RouterWithRedux>
          <Scene key='root'>
            <Scene component={Login} hideNavBar initial={true} key='login' title='Login'/>
            <Scene component={Home} key='home' title='Home'/>
          </Scene>
        </RouterWithRedux>
      </Provider>
    )
  }
}

person Community    schedule 21.09.2016    source источник


Ответы (1)


Я не уверен в причине. Вероятно, он сохраняет некоторые параметры состояния для разных actions/PUSH. В качестве обходного пути вы всегда можете попытаться быть явным: это сработало для меня.

const RouterWithRedux = connect()(Router)
const store = configureStore()

export default class App extends Component {
  render() {
    return (
      <Provider store={store}>
        <RouterWithRedux>
          <Scene key='root'>
            <Scene component={Login} hideNavBar initial={true} key='login' title='Login'/>
            <Scene component={Home} hideNavBar={false} key='home' title='Home'/>
          </Scene>
        </RouterWithRedux>
      </Provider>
    )
  }
}

Начиная с этого маршрута, NavBar виден. Это уместно, если ваш логин появляется только один раз на протяжении всего потока вашей сцены.

person jsdario    schedule 21.09.2016