【不对外开放】如何理解useRef

55 阅读1分钟

useRef函数返回一个对象,这个对象只有一个属性:current。该属性保存对应输入的state值,存储的是当前ref对象的值。 这个ref对象在组件重新渲染的时候会更新吗?该对象在组件的整个生命周期内持续存在,只要你不改变current属性,他就一直不变。 ref对象的current值可以更改,且不会引起组件重新渲染

所以,我们可以认为useRef的作用是,我们希望使用一个值,并且这个值不会随着函数组件的重新渲染执行而变化。允许在生命周期钩子中持久性存储ref对象。

函数组件在重新渲染时候,会将hook放在与函数组件相关联的地方,即fiberNode中。 但是函数组件在每次重新渲染的时候都会重新执行一次函数体,那么每次就会生成一个新的上下文/作用域。但是组件中需要将数据进行持久化管理,那么就只有通过“闭包”来实现了。

r