useRef

来源:3-14 useRef - 多次渲染之间的纽带

诺巴蒂

2020-06-30

我用 useState 代替,默认值传入一个 {current: xxx},然后不通过 setXXX ,更新,直接自身++,是不是也一个效果;

const [like, setLike] = useState({ current: 1})

...
like.current++
...

只是突然想到的,还没测试,因为我感觉 useRef 只是利用了一下对象的引用地址,而调用 setState 会将这个地址更新导致不一样

写回答

1回答

张轩

2020-07-01

同学你好 非常好的思考!你的理解是正确的 看这个帖子就知道 https://www.reddit.com/r/reactjs/comments/aufijk/useref_is_basically_usestatecurrent_initialvalue_0/  dan(react 作者之一) 说到:

useRef() 基本上就是 useState({current: initialValue })[0]

源代码其实就这样:
// an immutable object with a single mutable value
export function createRef(): RefObject {
  const refObject = {
	current: null,
  };
if (__DEV__) {
	Object.seal(refObject);
  }
  return refObject;
}


3
1
诺巴蒂
非常感谢!
2020-07-01
共1条回复

React18+TS高仿AntD从零到一打造组件库

设计,开发,测试,发布再到 CI/CD,从0到1造轮子

2123 学习 · 959 问题

查看课程