【发布时间】:2020-04-10 23:27:50
【问题描述】:
5 月使用createMaterialTopTabNavigator 创建的仪表板屏幕,有 5 个屏幕。
我想实现这一点,例如在 screen1 中执行某些功能之后,然后我希望 screen2 执行特定功能,而无需再次渲染任何屏幕。
所以我的问题是如何使选项卡连接并相互了解。
我希望在屏幕或道具之间共享状态。
这是我的仪表板代码(摘要)。
function Switch0({navigation, route}) {return <Screen0 navigation = {navigation} route={route}/>}
function Switch1({navigation, route}) {return <Screen1 navigation = {navigation} route={route}/>}
function Switch2({navigation, route}) {return <Screen2 navigation = {navigation} route={route}/>}
function Switch3({navigation, route}) {return <Screen3 navigation = {navigation} route={route}/>}
function Switch4({navigation, route}) {return <Screen4 navigation = {navigation} route={route}/>}
export default class DashBoard1 extends React.Component {
render(){
return (
<Tab.Navigator>
<Tab.Screen name="MyTeams" component={Switch0} options={navigationOptions0} />
<Tab.Screen name="Matches" component={Switch1} options={navigationOptions1}/>
<Tab.Screen name="PlayerMarket" component={Switch2} options={navigationOptions2}/>
<Tab.Screen name="Courts" component={Switch3} options={navigationOptions3}/>
<Tab.Screen name="Tournaments" component={Switch4} options={navigationOptions4}/>
</Tab.Navigator>
);
}
【问题讨论】:
-
你需要一个应用状态提供者在所有屏幕之上。
-
我尝试在 DashBoard 类中创建一个状态并将其发送到 5 个屏幕,我还创建了一个函数来更改 DashBoard 的状态并将其传递到 5 个屏幕并且它起作用了。但是,当 DashBoard 状态更改时,屏幕会重新渲染。
标签: react-native react-navigation expo react-navigation-v5