在React hooks中,`useState(null)[1]`是什么意思?

7

我现在正在使用React hooks。我看到过useState(null)[1],但我忘记了在哪里看到它。

我想知道和useState(null)有什么不同?


在数组中,[1] 是用来引用索引为 1 的元素的。所以……它不同的地方在于它是引用返回的数组中的一个元素,而不是整个数组。 - David
这是从由useState(null)返回的数组中提取元素。 - Jai
2个回答

11
文档中,它说:

返回一个有状态的值和更新它的函数。

但是它们的意思是:

返回一个数组,其中第一个位置是有状态的值,第二个位置是用于更新它的函数。

useState钩子返回一个数组,其中第一个位置(索引0)是状态,第二个位置(索引1)是该状态的设置器。
因此,当使用useState(null)[1]时,您只会得到该状态的设置器。
当您执行以下操作时:
 const [state, setState] = useState(null)

你正在进行的操作被称为解构赋值

由于在大多数情况下,你需要同时使用statesetState,解构使得使用它比单独使用它们更容易。

const hook = useState(null)
const state = hook[0]
const setState = hook[1]

使用解构,你只需要一行代码就能实现这个操作,而且更加简洁清晰。

如果你只需要setter,可以通过以下方式实现

const setState = useState(null)[1] // only getting the setter

请记住,{{两者是同一件事}}。


我想知道useState(null)和其他有什么不同? useState(null)返回一个数组([state, setState])。 useState(null)[1]访问返回的数组(setState)。

1
哦,那帮了我很多。谢谢! - Kexin Li

1
下面的表达式是等价的:

const [, setState] = useState(null); // Destructuring assignment
const setState = useState(null)[1]; // Array index excess.

作为一个返回值是数组的函数,useState 可以让你 拆分数组并获取其中的值
同时,你也可以 通过索引访问 数组元素。

2
答案缺乏解释。 - Akhil Aravind

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接