React Native中useFocusEffect报错:TypeError: (0, _react.useFocusEffect) is not a function
解决useFocusEffect报错:TypeError: (0, _react.useFocusEffect) is not a function
核心问题:
useFocusEffect不属于React核心API,是React Navigation提供的导航专用钩子,你从react包导入自然会找不到。正确解决步骤:
- 确保项目已安装
@react-navigation/native(RN6+版本必备基础包) - 修正导入路径,从
@react-navigation/native导入useFocusEffect - 确保组件被
NavigationContainer包裹(只有在导航上下文内才能使用该钩子)
- 确保项目已安装
修正后的代码示例:
// 正确导入 import React from "react"; import { useFocusEffect } from "@react-navigation/native"; // 组件内使用 useFocusEffect( React.useCallback(() => { console.log('页面获取焦点了'); // 可选:页面失去焦点时执行清理逻辑 return () => { console.log('页面失去焦点'); }; }, []) // 依赖数组按需添加 );
- 补充说明:
- RN6+版本确实支持
useFocusEffect,但必须从React Navigation的包导入,而非React核心包 - 使用时建议配合
React.useCallback包裹回调函数,避免不必要的重渲染
- RN6+版本确实支持
内容的提问来源于stack exchange,提问作者ellen
相关产品推荐
相关产品推荐

