当我尝试使用带有WebView的自定义NavigationBar时,我的NavigationBar的后退按钮不可点击/可按
render() {
return (
<Router
hideNavBar={true}
>
<Scene key='root' passProps={true}>
<Scene
key='Posts'
title='Posts'
component={PostList}
passProps={true}
initial={true}
/>
<Scene
key='Random'
title='Random'
component={Random}
passProps={true}
style={{paddingTop: 70}}
/>
<Scene
key='Login'
title='Login'
component={Login}
passProps={true}
style={{paddingTop: 70}}
/>
<Scene
key='Post'
title='Post'
component={Post}
passProps={true}
/>
</Scene>
</Router>
);
}
import {
NavigationBar,
Title,
} from '@shoutem/ui'
class Post extends Component {
render() {
console.log(this.props.uri)
return (
<View
style={styles.main}
>
<NavigationBar
centerComponent={<Title>{this.props.title}</Title>}
hasHistory
/>
<WebView
source={{uri: this.props.uri}}
style={styles.webView}
/>
</View>
)
}
}
但是,如果我删除WebView并仅在Post.js
中呈现NavigationBar,则可以单击后退按钮。如果我从Post.js
中删除自定义NavigationBar并使用Router.js
中的默认路由器,则可以单击后退按钮并显示WebView。
答案 0 :(得分:2)
我通过将自定义组件作为navBar
Router.js
道具传递来实现
import TopNav from '../components/TopNav.js'
class AppRouter extends Component {
render() {
return (
<Router
navBar={TopNav}
>
...
</Router>
)
...
import React, { Component } from 'react'
import { StyleSheet } from 'react-native'
import {
Actions,
ActionConst,
} from 'react-native-router-flux'
import {
NavigationBar,
Title,
} from '@shoutem/ui'
import DrawerSwitch from '../components/DrawerSwitch.js'
export default class CustomNav extends Component {
render(){
return (
this.props.hasHistory ?
<NavigationBar
hasHistory
navigateBack={Actions.pop}
centerComponent={<Title>{this.props.title}</Title>}
/> :
<NavigationBar
leftComponent={<DrawerSwitch iconName='sidebar'/>}
centerComponent={<Title>{this.props.title}</Title>}
/>
)
}
}