gpt4 book ai didi

reactjs - 在 React Native 屏幕之间传递数据(从屏幕 A 到屏幕 B 到屏幕 C)

转载 作者:行者123 更新时间:2023-12-03 14:15:32 25 4
gpt4 key购买 nike

考虑以下场景。基本上,我们有一个嵌套在 StackNavigator 中的 MaterialTopTabNavigator

如何将数据从函数一直传递到 MaterialTopTabNavigator。请注意,MaterialTopTabNavigator 必须首先经过 StackNavigator

file1.js

const[test,setTest] = useState('testing');
function moveToResults(){
navigation.navigate('Results', test)
}

这里我们有一个简单的函数,它使应用程序导航到不同的屏幕,并通过test状态。当调用 moveToResults() 时,我们会:

file2.js//请注意,PostFun 是 StackNavigator 的主页。

const Tab = createMaterialTopTabNavigator();

function PostFun({navigation}) {
return (

<Tab.Navigator
initialRouteName="Feed"
activeColor="#e91e63"
tabBarOptions={{
labelStyle: {fontSize:12, color:"#faa19b"},
tabStyle: {height:65, justifyContent: "flex-end"},
}}
style={styles.header}>
<Tab.Screen name="Activity" component={FindFunActivity} />
<Tab.Screen name="Event" component={FindFunEvent} />
</Tab.Navigator>

);
}

File2.js 是“MaterialTopTabNavigator”的开头,您可以看到此导航有两个顶部选项卡(“事件”和“事件”)。

其中一个选项卡可能看起来像这样,这就是我需要显示变量的地方:

file3.js

const FindFunEvent = (navigation) =>{
return(
<View>
<Text>{navigation.getParam()}</Text>
</View>
)

}

问题

如何让我的 test 变量显示在 FindFunEvent 组件中?

这比任何事情都更难解释,如果您愿意,可以在这里看一下视觉效果。

Here is the link to a short video that goes over the issue

最佳答案

您可以通过将值作为组件的 prop 传递来使其工作:

file1.js

const[test, setTest] = useState('testing');

function moveToResults(){
navigation.navigate('Results', { test: test })
}

file2.js

const Tab = createMaterialTopTabNavigator();

function PostFun({ route, navigation }) {
const { test } = route.params;

return (
<Tab.Navigator
initialRouteName="Feed"
activeColor="#e91e63"
tabBarOptions={{
labelStyle: {fontSize:12, color:"#faa19b"},
tabStyle: {height:65, justifyContent: "flex-end"},
}}
style={styles.header}
>
<Tab.Screen name="Activity">
{ (props) => <FindFunActivity {...props} myProp='test' /> }
</Tab.Screen>

<Tab.Screen name="Event" component={() => <FindFunEvent test={test} />} />
</Tab.Navigator>

);
}

file3.js

const FindFunEvent = ({ test }) => {
return(
<View>
<Text>{ test }</Text>
</View>
)
}

类似的例子可以在这里查看: https://snack.expo.io/UDHVnSUwK

关于reactjs - 在 React Native 屏幕之间传递数据(从屏幕 A 到屏幕 B 到屏幕 C),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61555900/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com