1

我正在开发 React 本机 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-serializable-values-were-found-in-the-navigation-state

4

1 回答 1

0

您可以使用props.navigation.navigate而不是props.navigation.goBack将参数传递到上一个屏幕。看到这个文档

故障排除

将参数传递给路由

于 2020-06-27T00:47:39.480 回答