react-hooks为什么使用useRef可以保存上次的值?

发布于 2022-09-12 01:10:14 字数 769 浏览 16 评论 0

我在useEffect中把state状态赋值给ref对象的current属性,也就是说这个preCountUseRef.current拿到最新的state值,可是在DOM中显示上次的state值

相关代码

import React, { useState, useRef, useEffect } from 'react'

const App = () => {
  const [count, setCount] = useState(0)
  const preCountUseRef = useRef(count)

  useEffect(() => {
    preCountUseRef.current = count
  })

  return (
    <div>
      <p>precount: {preCountUseRef.current}</p>
      <p>You clicked {count} times</p>
      <button onClick={() => setCount(() => count + 1)}>Click me</button>
    </div>
  )
}

export default App

能否详细说明一下useRef运行机制以及对官网解释的"useRef就像是可以在其.current属性中保存一个可变值的“盒子”。"这句话该怎么理解呢?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

一梦浮鱼 2022-09-19 01:10:14

跟闭包原理差不多

var add = (function() {  
  var counter =0;  
  return function() {counter +=1;returncounter}  
})();  
  
add();  
add();  
add();
// 3
巴黎夜雨 2022-09-19 01:10:14

ref 你理解成为是这个组件中的作用域链最顶层的变量就行了,也就是闭包。另外楼主的 useEffect 最好传一下第三个值,即使它是空的,否则在 setState 的时候会报错……

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文