我目前正在学习React/Hooks,我想知道它们之间有什么区别(如果有的话(:
const [myRef, _dummy] = useState({current: 0});
const myRef = useRef(0);
(永远不会使用_dummy
(。
据我所知,无论我们选择什么声明,myRef
都可以以完全相同的方式使用。
这是真的吗?如果是的话,useRef
只是句法糖吗?
它们不等价。当您通过调用setState来更新状态时,您将触发一个重新应答器。但是,当您更新引用时,将不会有重新引用。这是因为refs是可变的,并且不与组件的状态绑定。
我假设您永远不会更改值(如伪变量所示(,在这种情况下,两种形式以及const myRef = {}
在实践中是相同的,但在语义上是不同的。
在您给出的示例中,没有,没有区别
如果是,useRef只是一个句法糖吗?
不,有一个根本的区别,即调用_dummy
(即设置状态(会导致渲染,而设置ref值则不会。