您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

为什么需要useRef在组件函数之外包含可变变量而不定义变量?

为什么需要useRef在组件函数之外包含可变变量而不定义变量?

useRef将为 组件分配一个引用,而在函数组件外部定义的变量将仅被调用一次。

此外,尝试呈现countCache值将行不通:

let countCache = 0;

function Counter() {
  ...
  countCache = 0;

  useEffect(() => {
    countCache = count;
  });
  ...

  return <div>{countCache}</div>
}

由于使用了javascript闭包,因此参考可以按方面使用。

在下一个示例中,单击按钮时,您可能会注意到variable两个组件都是全局的,而reference总是按预期更新。

// defined a variable outside function component
let countCache = 0;

function Counter() {
  const [count, setCount] = useState(0);

  const countRef = useRef(count);

  useEffect(() => {
    // Update count on every render
    countCache = count;
    countRef.current = count;
  });

  return (
    <div>
      <button onClick={() => setCount(p => p + 1)}>click me</button>
      <h3>variable</h3>
      {countCache}
      <h3>reference</h3>
      {countRef.current}
    </div>
  );
}

export default function App() {
  return (
    <Flex@R_838_2419@>
      <Flex@R_838_2419@>
        <Counter />
      </Flex@R_838_2419@>
      <Flex@R_838_2419@>
        <Counter />
      </Flex@R_838_2419@>
    </Flex@R_838_2419@>
  );
}

编辑Q-57444154-封闭

其他 2022/1/1 18:16:55 有226人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶