useState()的 state 是否可以直接修改?是否可以引起组件渲染?
参考答案:
useState()
是 React 的一个钩子(Hook),用于在函数组件中添加本地状态。useState()
返回一个包含两个元素的数组:第一个元素是当前的状态值,第二个元素是一个设置该状态的函数。
直接修改 useState()
的 state 是不可行的。你不能直接修改从 useState()
返回的状态值,因为它是只读的。如果你试图直接修改它,React 将会警告你。
你应该使用 useState()
返回的第二个元素(一个函数)来更新状态。这个函数会接受一个新的状态值作为参数,并更新组件的状态。这将会触发组件的重新渲染。
例如:
import React, { useState } from 'react';
function Example() {
// 声明一个新的状态变量,该变量初始化为 "Hello"
const [count, setCount] = useState(0);
return (
<div>
<p>You clicked {count} times</p>
<button onClick={() => setCount(count + 1)}>
Click me
</button>
</div>
);
}
在这个例子中,count
是状态变量,setCount
是用于更新 count
的函数。每次点击按钮时,setCount
函数都会被调用,传入一个新的 count
值,从而触发组件的重新渲染。
所以,你不能直接修改 useState()
的 state,但是你可以通过 useState()
返回的函数来更新状态,这会引起组件的重新渲染。