useRef作为React钩子的用法

时间:2019-11-15 21:03:28

标签: reactjs react-hooks

我目前正在学习React / Hooks,我想知道两者之间有什么区别:

const [myRef, _dummy] = useState({current: 0});
const myRef = useRef(0);

(永远不会使用_dummy)。

据我了解,myRef的使用方式与我们选择的声明完全相同。

是真的吗?如果是,useRef只是语法糖吗?

2 个答案:

答案 0 :(得分:1)

它们不是等效的。通过调用setState更新状态时,将触发重新渲染。但是,当您更新参考时,将不会重新渲染。这是因为refs旨在是可变的,并且不依赖于组件的状态。

我假设您永远不会更改值(如您的虚拟变量所指示),在这种情况下,这两种形式与const myRef = {}一起在实践中是相同的,但在语义上并不相同。

答案 1 :(得分:0)

在您给出的示例中,没有,没有区别

  

如果是,useRef是否只是语法糖?

否,根本的区别在于调用_dummy(即设置状态)会导致渲染,而设置ref值则不会。