在返回更新父级时反应导航V5

问题描述 投票:0回答:2

我正在开发 React Native Expo App 并使用 Hooks 开发 React 导航版本 5。如何更新 goBack() 上的状态?

屏幕一

const fetchData = async (props) => {
        //http request
    }
    useEffect(() => {
        fetchData(props);
    }, [props]);

return(
<View>
<TouchableOpacity onPress={() => props.navigation.navigate('Settings',{onGoBack, () => fetchData(props)})}>
</TouchableOpacity
</View>
)

屏幕二

const submit = () => {
props.navigation.route.params.onGoBack();
props.navigation.goBack();
}

收到警告

在导航状态中发现不可序列化的值,这可能会破坏持久和恢复状态等使用。如果您在参数中传递不可序列化的值(例如函数、类实例等),则可能会发生这种情况。如果您需要在选项中使用带有回调的组件,则可以使用“navigation.setOptions”。有关更多详细信息,请参阅 https://reactnavigation.org/docs/troubleshooting#i-get-the-warning-non-serialized-values-were-found-in-the-navigation-state

react-native expo react-navigation
2个回答
0
投票

您可以使用

props.navigation.navigate
而不是
props.navigation.goBack
将参数传递到上一个屏幕。 请参阅此文档

故障排除

向路由传递参数


0
投票

我认为做到这一点的唯一方法是在两条路由之上使用上下文,这样它们就可以通过某种方式在彼此之间发送状态。

© www.soinside.com 2019 - 2024. All rights reserved.