在展会路由中的屏幕之间传递函数,原生反应

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

我开始使用 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 对象,但出现错误

react-native react-navigation expo-router
1个回答
0
投票

我认为这不是做你想做的事情的更好方法。

更好的方法是将

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

希望这有帮助!

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