React中useEffect完全不触发问题求助
问题原因及解决办法
核心问题1:错误的useEffect用法
你代码里把useEffect当成变量进行赋值操作了:
useEffect = (() => { onPageLoad() }, [])
这完全不符合React钩子的调用规范,useEffect是React提供的钩子函数,必须通过调用的方式使用,而不是重新赋值。
核心问题2:函数声明顺序导致的引用问题
onPageLoad是用const声明的函数,不存在变量提升,在你原本的代码里,useEffect的回调尝试调用它时,这个函数还未被定义,即使修正了第一个问题,也会触发引用错误。
修正后的代码
import React, { useEffect } from 'react' function Home(props) { // 先声明函数,确保useEffect回调能访问到 const onPageLoad = () => { console.log('hello from page load') } // 正确调用useEffect钩子 useEffect(() => { onPageLoad() }, []) return ( <p>Home Component</p> ) } export default Home
额外说明
- React钩子必须遵循调用规则:只能在函数组件的顶层调用,不能嵌套在条件、循环或其他函数内部。
- 依赖数组
[]表示该effect仅在组件挂载时执行一次,符合你的需求。
内容的提问来源于stack exchange,提问作者buzz
相关产品推荐
相关产品推荐

