react Native 每次进入页面都会执行的hooks

本文讨论了在ReactNative中如何使用`useFocusEffect`和`navigation.addListener`来处理页面的激活和失去焦点事件,强调了两者在首次进入和后续返回页面时的不同行为。
摘要由CSDN通过智能技术生成

这里的写法是函数组件,由于用class组件的时候不多,就不怎么用生命周期函数(我也看了生命周期函数,只有进入页面执行一次,然后去其他页面之后,再返回这个页面就不会执行了。)

1、 使用 useFocusEffect 

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

  useFocusEffect(React.useCallback(() => {
		console.log('激活/进入当前页面');
  }, []));

2、使用 navigation.addListener

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

  const navigation = useNavigation()  

  useEffect(() => {
    const unsubscribe = navigation.addListener("focus", () => {
      console.log("当前页面获取到焦点了。")
    });
    return () => {
      unsubscribe();
    };
  }, [navigation]);
    useEffect(() => {
        const unsubscribeBlur = navigation.addListener('blur', () => {
            console.log('失去焦点');
            expLoreStore.clearSound();
        });
        return () => {
            unsubscribeBlur();
        };
    }, [navigation]);

 

        不同点:useFocusEffect是第一次进入这个页面以及后续进入都会执行的函数。

navigation.addListener 是第一次激活当前页面的时候,不会执行,后续每次返回到这个页面的时候,才会执行。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值