React 挂载完毕后初始化数据 注意点
一般情况下我们会在 挂载完毕后 对变量进行初始化
useEffect(() => {
// ....
},[])
useEffect
内部存在着闭包,即内部定义的数据,外部无法使用
useEffect(() => {
let a = 1
},[])
console.log(a) // undefined,未定义
修改未更新
let a // 先定义变量 ,但未赋值
useEffect(() => {
a = 1
},[])
此处在挂载完毕才对a
变量进行赋值,但是修改后并不会使组件重新渲染,因此值能使用,但是不能呈现效果
严重问题:当组件再次渲染,a
的值会变为undefined
,因为没有再触发 挂载完毕的钩子函数
推荐:
useSate()
存储数据
const [num,setNum] = useState(0)
useEffect(() => {
setNum(2)
},[])