我目前正在学习React / Hooks,我想知道两者之间有什么区别:
const [myRef, _dummy] = useState({current: 0});
const myRef = useRef(0);
(永远不会使用_dummy
)。
据我了解,myRef
的使用方式与我们选择的声明完全相同。
是真的吗?如果是,useRef
只是语法糖吗?
答案 0 :(得分:1)
它们不是等效的。通过调用setState更新状态时,将触发重新渲染。但是,当您更新参考时,将不会重新渲染。这是因为refs旨在是可变的,并且不依赖于组件的状态。
我假设您永远不会更改值(如您的虚拟变量所指示),在这种情况下,这两种形式与const myRef = {}
一起在实践中是相同的,但在语义上并不相同。
答案 1 :(得分:0)
在您给出的示例中,没有,没有区别
如果是,useRef是否只是语法糖?
否,根本的区别在于调用_dummy
(即设置状态)会导致渲染,而设置ref值则不会。