https://react.dev/reference/react/useState
useState is a React Hook that lets you add a state variable to your component.
改变状态使用useState
我理解成改变组件的状态,其实也就是控制组件的变量。
改变组件的变量。
比如我们有个button,然后进入了Loading状态,就可以使用useState来改变。
一下是一个boolean值的修改状态的形式
基础值都可以直接这样去修改state
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
  | import { useState } from 'react'
export default function btnDemosPage() {
  const [btnLoading, setBtnLoading] = useState(false)
  const handleClick = () => {
    setBtnLoading(true)
    setTimeout(() => {
      setBtnLoading(false)
    }, 2000)
  }
  return (
    <>
      <button onClick={handleClick} loading={btnLoading}>
        click me.
      </button>
    </>
  )
}
  | 
接下去是常见的Object的修改方式的示例
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
  | import { useState } from 'react'  
  
export default function stateDemosPage() {  
  const [person, setPerson] = useState({  
    name: 'foo',  
    age: 18,  
    gender: 0,  
  })  
  return (  
    <>  
      <div>stateDemos</div>  
      <div>  
        <div>  
          name:  
          {person.name}  
        </div>  
        <div>  
          age:  
          {person.age}  
        </div>  
        <div>  
          gender:  
          {person.gender}  
        </div>  
      </div>  
      <div>  
        <input  
          type="text"  
          value={person.name}  
          onChange={(e) => {  
            setPerson({  
              ...person,  
              name: e.target.value,  
            })  
          }}  
        />  
      </div>  
    </>  
  )  
}
  | 
这里我们主要关注setPerson函数,传入了一个新的对象,用扩展运算符展开对象+覆盖新的被修改的值。
useState是异步的
1
2
3
4
5
6
  | const [count, setCount] = useState(0);
const handleClick = () => {
  setCount(count + 1);
  console.log(count); // 输出的还是旧值
};
  |