Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 将useRef用作React钩子_Reactjs_React Hooks - Fatal编程技术网

Reactjs 将useRef用作React钩子

Reactjs 将useRef用作React钩子,reactjs,react-hooks,Reactjs,React Hooks,我目前正在学习React/Hooks,我想知道它们之间有什么区别(如果有的话): const[myRef,_dummy]=useState({current:0}); const myRef=useRef(0); (\u dummy将永远不会被使用) 据我所知,myRef的使用方式与我们选择的声明完全相同 这是真的吗?如果是,那么useRef仅仅是一种语法糖吗?在您给出的示例中,没有区别 如果是,useRef只是一个语法糖吗 不,调用\u dummy(即设置状态)会导致渲染,而设置ref值则不

我目前正在学习React/Hooks,我想知道它们之间有什么区别(如果有的话):

const[myRef,_dummy]=useState({current:0});
const myRef=useRef(0);
\u dummy
将永远不会被使用)

据我所知,
myRef
的使用方式与我们选择的声明完全相同


这是真的吗?如果是,那么
useRef
仅仅是一种语法糖吗?

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

如果是,useRef只是一个语法糖吗


不,调用
\u dummy
(即设置状态)会导致渲染,而设置ref值则不会。这两者是不等效的。当您通过调用setState更新状态时,您将触发重新渲染器。但是,当您更新ref时,将不会有重新渲染器。这是因为参照是可变的,不与零部件的状态相关联


我假设您永远不会更改该值(如伪变量所示),在这种情况下,这两种形式以及
constmyref={}
在实践中是相同的,但在语义上是不同的。

谢谢您的回答。当我说
useRef
是一种语法糖时,我的意思是它只做上面声明的
useState
所能做的事情。所以我理解你确实确认了这一点?更清楚地说,我的意思是,
useRef
不可能存在,我们仍然可以用
useState
@popopov来模拟这个功能。是的,
useRef
只是跟踪页面呈现的值,这与
useState
的功能相同。是的,我将直接更改值
myRef.current=…
,而不使用
setXXX
函数(
\u dummy
,在我的示例中),如果您询问的是useRef/useState的具体用法,而不是询问两者之间的语义差异,在任何人都能提供帮助之前,您需要在您的问题中扩展您的示例。谢谢,我想我的问题已经得到了回答,我知道我可以在这两种情况下使用
myRef.current
为我的函数获取类似“实例变量”的内容