跳到主要内容

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() 返回的函数来更新状态,这会引起组件的重新渲染