为什么useState变量`const`在反应?

时间:2019-12-18 16:04:23

标签: javascript reactjs ecmascript-6

我的理解是,在使用useState()时,我们应该这样声明数组:

const [someBooleanValue, setSomeBooleanValue] = useState(false)

代替

let [someBooleanValue, setSomeBooleanValue] = useState(false)

通常,const用于不会改变的变量。在这里,someBooleanValue将会改变。在这种情况下,允许我们使用const关键字的原因是什么?

2 个答案:

答案 0 :(得分:1)

在具有功能组件的React Hooks中,您的代码每次对功能组件的调用都获得一个状态值。 React分别处理存储,并在每次执行代码时通过useState返回当前值,以提供最新状态值。

从文档中

  

我们声明一个称为count的状态变量,并将其设置为0。 React将记住两次重渲染之间的当前值,并为我们的函数提供最新的值。如果要更新当前计数,我们可以调用setCount。

因此,在这种情况下,我们使用const,因为永远不要在代码中重新分配值。

答案 1 :(得分:-2)

const [someBooleanValue, setSomeBooleanValue] = useState(false)

实际上是这样的

const handleState = useState(false)

handleState[0]someBooleanValue,而handleState[1]setSomeBooleanValue

handleState是一个数组,是一种引用类型。 handleState只是指向该数组的指针,而实际上该指针永远不会改变。

someBooleanValuesetSomeBooleanValuehandleState数组的元素,位于索引01

因此,someBooleanValue会发生变化,而不是指向包含它的数组的指针。

希望这可以澄清!