首页 > 解决方案 > React Navigation v5:用于标题屏幕交互的 useEffect()?

问题描述

根据文档,我们应该使用 useLayoutEffect() 进行标题屏幕交互。我想通过 useEffect() 钩子达到同样的效果,下面的方法是否正确?

const [flag, setFlag] = useState(false);

  useEffect(() => {
    navigation.setOptions({
      headerRight: () => (
        <Button
          onPress={() => {
            console.log("Header", flag);
          }}
          title="Update count"
        />
      ),
    });
  }, [flag]);

此外,使用 navigation.setOptions() 应该更改导航道具,但是如何使用docs中的 useLayoutEffect() 和dependecy [navigation]防止进入无限循环?

标签: react-nativereact-navigationreact-navigation-v5

解决方案


此外,使用 navigation.setOptions() 应该改变导航道具

没有理由setOptions应该改变navigation道具。该navigation对象不包含任何选项,更新选项不会更改导航对象中的任何内容。


推荐阅读