Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/react-native/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
React native 需要一个主组件,每当我从抽屉[react native]点击它时,它都会重新渲染_React Native_React Navigation V5 - Fatal编程技术网

React native 需要一个主组件,每当我从抽屉[react native]点击它时,它都会重新渲染

React native 需要一个主组件,每当我从抽屉[react native]点击它时,它都会重新渲染,react-native,react-navigation-v5,React Native,React Navigation V5,我有一个名为Home的抽屉屏幕,它可以渲染材质顶部选项卡导航器和其中定义的其他堆栈屏幕。问题是,当我从其他定义的屏幕单击主屏幕时,我想重新渲染主屏幕。请帮助,这是应用程序中需要的最通用功能,但我无法做到。 |iOS或Android |两者皆有 |@react-navigation/native 5.0.7 |@react导航/抽屉5.1.0 |react native Reactivated 1.7.0 |react本机手势处理程序1.6.0 |反应本机安全区域上下文0.7.3 |react本机

我有一个名为Home的抽屉屏幕,它可以渲染材质顶部选项卡导航器和其中定义的其他堆栈屏幕。问题是,当我从其他定义的屏幕单击主屏幕时,我想重新渲染主屏幕。请帮助,这是应用程序中需要的最通用功能,但我无法做到。 |iOS或Android |两者皆有 |@react-navigation/native 5.0.7 |@react导航/抽屉5.1.0 |react native Reactivated 1.7.0 |react本机手势处理程序1.6.0 |反应本机安全区域上下文0.7.3 |react本机屏幕2.8.0 |反应本机0.61.5


您应该使用导航事件来检测特定的屏幕焦点和模糊。 焦点-当屏幕进入焦点时,会发出此事件 模糊-当屏幕失去焦点时会发出此事件

用法

函数配置文件({navigation}){
React.useffect(()=>{
const unsubscribe=navigation.addListener('focus',()=>{
//此事件在屏幕聚焦时发出
//做点什么
});
退订;
},[导航];
返回;
}
函数配置文件({navigation}){
React.useffect(()=>{
const unsubscribe=navigation.addListener('blur',()=>{
//当屏幕失去焦点时,将发出此事件
//做点什么
});
退订;
},[导航];
返回;
}

有关更多详细信息,您可以阅读文档

不确定重新渲染的含义,但如果您想在每次打开屏幕时运行函数,可以使用usefocuseffect挂钩将主屏幕刷新到其初始状态。按下抽屉屏幕的home(主页)按钮时,您可以查看图像上方
    function Profile({ navigation }) {
  React.useEffect(() => {
    const unsubscribe = navigation.addListener('focus', () => {
      //This event is emitted when the screen comes into focus
      // do something
    });

    return unsubscribe;
  }, [navigation]);

  return <ProfileContent />;
}


    function Profile({ navigation }) {
  React.useEffect(() => {
    const unsubscribe = navigation.addListener('blur', () => {
      //This event is emitted when the screen goes out of focus
      // do something
    });

    return unsubscribe;
  }, [navigation]);

  return <ProfileContent />;
}