我开始使用 React Native 并尝试使用 expo 路由将 setState 函数从一个屏幕传递到另一个屏幕:
...
const [message, setMessage] = useState(null);
...
<Pressable
onPress={() =>
router.push({
pathname: "/page2",
params: {message: message, method: setMessage},
})
}
...
但是当我去使用第2页中的功能时,我收到错误消息:
方法不是函数(它是'函数绑定dispatchSetState(a0) { [字节码]}')
如何在 React Native 中在屏幕之间传递函数?
或者,如何从堆栈中更下方的屏幕更改主屏幕中的状态。
我尝试将函数像变量一样传递给 params 对象,但出现错误
我认为这不是做你想做的事情的更好方法。
更好的方法是将
PARAMS
作为对象,并让 /page2
具有接收 PARAMS
的函数。
<Pressable
onPress={() =>
router.push({
pathname: "/page2",
params: {message: message},
})
}
然后在
/page2
这样离开
const [message, setMessage] = useState(null);
React.useEffect(() => {
if (route.params?.message) {
setMessage(route.params?.message)
}
}, [route.params?.message]);
return (
<View style={{ flex: 1, alignItems: 'center', justifyContent: 'center' }}>
<Text style={{ margin: 10 }}>Message: {message}</Text>
</View>);
然后使用
message
变量来做你想做的事!
参考:https://reactnavigation.org/docs/params/#what-should-be-in-params
希望这有帮助!