You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

navigation.addListener绑定focus事件打印不生效且useEffect报错

问题排查解决指南

根因分析

你收到的警告核心是React要求useEffect的返回值只能是清理函数或undefined,你当前返回了对象,本质原因是React Navigation版本差异导致的返回值规则不同:

  • 4.x及更早版本:navigation.addListener直接返回可直接调用的清理函数
  • 5.x及后续所有版本:navigation.addListener返回的是带remove方法的对象,不能直接作为清理函数返回
    这一差异同时导致事件绑定逻辑异常,所以回调内的console.log没有触发。

你收到的警告原文:
Warning: An effect function must not return anything besides a function, which is used for clean-up. You returned: [object Object];

修复代码

将useEffect的返回值改为调用listener的remove方法的匿名函数即可:

useEffect(() => {
  const unsubscribeListener = navigation.addListener('focus', () => {
    console.log('Testeeee');
  });
  // 返回符合React要求的清理函数
  return () => unsubscribeListener.remove();
}, [navigation]);

可选排查项

如果修改后回调还是不触发,可以检查两点:

  • 确认当前组件是导航注册的路由页面,确实能拿到合法的navigation实例
  • 确认事件名称拼写正确,无大小写、拼写错误

内容的提问来源于stack exchange,提问作者Lucas Lima

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 08:30:00