我正在使用
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>
);
}
}
但我认为我在计划中犯了一个错误。我希望导航栏有一个“后退按钮”,可以通过调用
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>
);
}
}
在我看来很糟糕,有没有更好的办法?