React 函数式组件获取不到变量值?

import React, { useEffect, useState } from 'react';
const Test = () => {
  let test = null;
  useEffect(() => {
    test = 123;
  }, [])
  const testClick = () => {
    console.log(test) // undefined
  }
  return(<button onClick={testClick}>点击</button>)
}

请问大佬们这是为啥?我难以理解...页面加载完毕的时候赋值给test,按理说test已经有值了,为啥打印不出来呢?

阅读 2.7k
1 个回答
✓ 已被采纳

因为你的test变量定义在组件内部, 在每一次Test组件渲染时,test变量都会被重新赋值成null 而useEffect却不会在执行 所以是null 建议是使用useRef
e.g.

import React, { useEffect, useState } from 'react';
const Test = () => {
  const test = useRef(null);
  useEffect(() => {
    test.current = 123;
  }, [])
  const testClick = () => {
    console.log(test.current) // undefined
  }
  return(<button onClick={testClick}>点击</button>)
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题