当我做了navigation.goBack();次回到一个页面后,我想运行一个函数,我该怎么做? 注意:如果我从页面A重定向到页面B,我想在到达页面B后运行该函数,并且我还想使用物理返回按钮返回

这就是我try 过的:

 <TouchableOpacity
     onPress={() => {
     navigation.goBack();
     }}>
     <Ionicons
     name="chevron-back-outline"
     size={24}
     color="#000"
     style={{}}
   />
 </TouchableOpacity>
//this is pageA


  useEffect(()=>{
    getUserInfo()
  })
//on pageB

推荐答案

很好的问题,为此,您可以使用useFocusEffectThis钩子,每次您再次将注意力放在一个视图上时运行一次,允许您在GoBack函数生效后执行一些代码.

import { useFocusEffect } from '@react-navigation/native';

const PageB = () => {
  // ... other code for pageB
  useFocusEffect(
    React.useCallback(() => {
      getUserInfo();
      // Return a cleanup function if necessary
      return () => {
        // Cleanup code (if needed)
      };
    }, [])
  );
};

Intercepting Backbutton event:

为此,您可以简单地使用BackHandler事件侦听器:

import { BackHandler } from 'react-native';

useEffect(() => {
  const backAction = () => {
    getUserInfo();
    return true;  // Prevent default behavior (optional)
  };

  const backHandler = BackHandler.addEventListener(
    'hardwareBackPress',
    backAction
  );

  return () => backHandler.remove();
}, []);

我希望它对你有用!

React-native相关问答推荐

react 本机函数不通过usContext触发

如何在Reaction本地日历中 Select 年份?

如何将S的此API输出输出到平面列表中?控制台将数据及其可视记录到平面列表中,但我无法输出到平面列表中

从 .apk 到 .aab 的本地构建版本react,如何将应用程序发送给客户端?

ReactNative 0.43-rc.2 FlatList -- 试图获取超出范围索引 0 的框架

在Windows中连接到远程调试器时react-native 超时

如何解决此错误您可能需要适当的加载程序来处理此文件类型

Realm 和 React Native - 实现自动更新的最佳实践?

错误: Unable to determine the current character, it is not a string, number, array, or object in react-native for android

React-Native:FlatList onRefresh not called on pull up.

无法加载 exp:// 出了点问题

如何将 BuildConfig 值传递给依赖模块?

动态改变 React Native Flat List 中的列数

设置 react-native 元素时使用特定的包名称

如何从react-native应用程序打开外部应用程序?

React Native:如何动态更改

无法读取未定义的属性 string| React.PropTypes | LayoutPropTypes.js

react-native 开始给出 Invalid 正则表达式无效错误

React Native:无法解析模块 fs

StackNavigator中如何改变动画的方向?