React Native:更新数据后没有重新渲染组件

问题描述

我有两个屏幕,其中一个屏幕显示配置文件信息,另一个屏幕用于编辑信息。如果我输入了第一个屏幕配置文件,它将显示数据库中的正确数据。然后,我转到下一个屏幕,在这里我可以更改到目前为止所有可用的信息。但是,如果我返回上一个屏幕,我仍然会看到旧数据。因此,无需重新渲染。

但是,如果我导航到另一个屏幕,则该屏幕将获取新数据。并执行getCurrentUserProfile调用

这会在屏幕上显示有关用户的个人资料信息。

const ProfileScreen = props => {

  const [userObj,setUserObj] = useState({});

  useEffect(() => {
    let mounted = true;
    getCurrentUserProfile().then(user => {
      if (mounted) {
        setUserObj(user);
      }
      console.log(user)
    });
    return () => mounted = false;
  },[]);

  console.log("----b------") // This is only output on the first call
}

我该如何解决。是否有办法在数据库中进行某些更改,以便组件重新呈现并获取新数据。

谢谢。

解决方法

您可能正在使用@ react-navigation包。因此,如果您想在返回上一页时重新获取数据,则可以在该“上一页”上使用https://reactnavigation.org/docs/use-is-focused

只要看看他们的文档,您就会明白。

P.S:通常我们不会直接卸载组件。在React Native中,我们使用导航器来安装/卸载组件