Можно ли добавить пользовательские кнопки в NavBar в react-native-router-flux?

Я хочу добавить кнопку меню burger при просмотре определенных страниц и правую боковую кнопку, которая появляется на всех страницах. Возможно ли это с помощью react-native-router-flux?

UPDATE: я смог получить правую боковую кнопку без особых проблем, используя этот код

<Scene key="home"
       component={HomePage}
       hideBackImage={true}
       ...
       rightButtonImage={HelpIcon}
       onRight={()=>{}}
       rightTitle={null}
       rightButtonIconStyle={{ width: 44, height: 44 }} />

кнопка меню burger оказывается более сложной. Есть drawerImage свойство на панели навигации, но никакой другой документации о том, как сделать этот drawerImage появится и как установить функцию обработчика.

Я попытался установить rightButtonImage, onRight rightTitle и rightButtonIconStyle так же, как и для левой кнопки, но кнопка не появилась.

обновление 2: я понизился до react-native-router-flux v3.34.0 из-за этой проблемы:https://github.com/aksonov/react-native-router-flux/issues/1154

и добавил эти реквизиты к моей сцене:

...
renderBackButton={()=>{ return null; }} /* Hide the back button...goofy mechanism but it works */
leftButtonImage={NavigationBurgerIcon}
onLeft={()=>{}}
leftTitle={null}
leftButtonIconStyle={{ width: 30, height: 30 }}
...

2 ответов


вы можете написать свою собственную панель навигации для 100% управления. Вы можете структурировать свой компонент NavBar из их реализация NavBar и сделать следующее:

<Router 
  navBar={NavBar}
  ...
/>

на react-native-router-flux api более подробно об этом.

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


Вы можете сделать что-то вроде этого.

<Router renderLeftButton={this.navBarButton}>
  <Scene .....
</Router>

функция:

navBarButton(){
return(
  <TouchableOpacity onPress={() => Actions.refresh({ key: 'drawer', open: true })}>
    <Icon name='ios-menu' size={30} />
  </TouchableOpacity>
)

}

используя реагировать родной-вектор-иконки