如何使用useEffect与依赖关系时,聚焦屏幕只在React导航?

olhwl3o2  于 2023-03-09  发布在  React
关注(0)|答案(1)|浏览(122)

我想使用useEffect与依赖性时,屏幕是重点在这个屏幕上。
useEffect会在屏幕聚焦时继续监听,如果dependancyVar改变了,它会做一些事情。我怎么做呢?

useFocusEffect(
         useEffect(()=>{
           if(dependancyVar){
              //do something
           }
           else{
              //do other things
           }
           return()=>{
             alert("Screen was unfocused")
           }
         },[dependancyVar])
     );

下面代码适合我,但我不知道是否应该使用useFocusEffect

const isFocused= useIsFocused();
  useEffect(()=>{
    if(isFocused){
      if(dependencyVar){
        //do something
      }
      else{
        //do other things
      }
    }
  },[isFocused, dependencyVar])
s5a0g9ez

s5a0g9ez1#

React导航建议在useFocusEffect中使用useCallback,而不是useEffect。
https://reactnavigation.org/docs/use-focus-effect/

useFocusEffect(
  React.useCallback(() => {
    let isActive = true;

    const fetchUser = async () => {
      try {
        const user = await API.fetch({ userId });

        if (isActive) {
          setUser(user);
        }
      } catch (e) {
        // Handle error
      }
    };

    fetchUser();

    return () => {
      isActive = false;
    };
  }, [userId])
);

相关问题