我正在制作一个react-router
的网络应用,其导航类似于移动堆栈导航。页面的内容应该包含在NavigationScreen对象中(控制侧栏,导航栏和作品):
class HomeScreen extends React.Component {
render() {
return (
<NavigationScreen>
<View style={{ flex: 1, alignItems: 'center', justifyContent: 'center' }}>
<Text>Home Screen</Text>
<Link to='/details'>details</Link>
</View>
</NavigationScreen>
);
}
}
路线是这样的:
export default class App extends React.Component {
render() {
return (
<BrowserRouter>
<View style={{ position: 'absolute', top: 0, bottom: 0, left: 0, right: 0 }}>
<Route exact path='/' component={HomeScreen} />
<Route path='/details' component={DetailsScreen} />
</View>
</BrowserRouter>
);
}
}
但我认为我在计划中犯了一个错误。我希望导航栏有一个&#34;后退按钮&#34;,它应该通过调用this.props.history.goBack
来工作。问题是HomeScreen
类接收此道具,而不是NavigationScreen
。我能看到的唯一解决办法是通过一个相当尴尬的道具:
class HomeScreen extends React.Component {
render() {
return (
<NavigationScreen history=this.props.history>
<View style={{ flex: 1, alignItems: 'center', justifyContent: 'center' }}>
<Text>Home Screen</Text>
<Link to='/details'>details</Link>
</View>
</NavigationScreen>
);
}
}
IMO看起来很糟糕,还有更好的方法吗?