React 中 useState 的 基础使用

概念: useState 是一个React Hook(函数),它允许我们向组件添加状态变量,从而影响组件的渲染结果。

本质: 和普通JS变量不同的是,状态变量一旦发生变化,组件的视图UI也会跟着变化(数据驱动视图)。react没有双向绑定,所以要使用useState,vue可以直接使用变量 就会双向绑定。

javascript 复制代码
// 用useState给组件添加状态变量,以实现一个计数器按钮
import { useState } from "react";

function App() {
  //第一步,调用useState添加一个状态变量
  //count是状态变量,setCount是用来修改状态变量的方法,其参数为状态变量的初值
  const [count, setCount] = useState(0);
  //第二步,点击事件调用setCount方法
  //作用:1、用传入的新值修改count 2、重新用新的count渲染UI
  const handleClick = () => {
    setCount(count + 1);
  };

  return (
    <div className="App">
      <button onClick={handleClick}>{ count }</button>
    </div>
  );
}

export default App;

修改状态的规则

规则: 在React中,状态被认为是只读 的,我们应该始终替换它而不是修改它,直接修改状态不能引发视图更新。

修改对象状态

规则:对于对象类型的状态变量,应该始终传给set方法一个全新的对象来进行修改。

javascript 复制代码
// 用useState给组件添加状态变量,以实现一个计数器按钮
import { useState } from "react";

function App() {
  const [count, setCount] = useState(0);
  const handleClick = () => {
    setCount(count + 1);
  };

  //修改对象状态
  const [form, setForm] = useState({name: 'jack'});

  const changeForm = () => {
    //setForm()函数会用新对象替换旧对象, 但是这里新对象相对于老对象只是修改了name属性, 其他属性保持不变
    //...是展开运算符, 用来把form对象的所有键值对展开到新对象中. 然后重新设置了name属性
    setForm({...form, name: 'rose'});
  }

  return (
    <div className="App">
      <button onClick={handleClick}>{count}</button>
      <button onClick={changeForm}>修改对象状态 {form.name}</button>
    </div>
  );
}

export default App;
相关推荐
bearpping8 小时前
Nginx 配置:alias 和 root 的区别
前端·javascript·nginx
@大迁世界8 小时前
07.React 中的 createRoot 方法是什么?它具体如何运作?
前端·javascript·react.js·前端框架·ecmascript
January12078 小时前
VBen Admin Select 选择框选中后仍然显示校验错误提示的解决方案
前端·vben
. . . . .8 小时前
前端测试框架:Vitest
前端
xiaotao1319 小时前
什么是 Tailwind CSS
前端·css·css3
颜酱9 小时前
DFS 岛屿系列题全解析
javascript·后端·算法
战南诚10 小时前
VUE中,keep-alive组件与钩子函数的生命周期
前端·vue.js
发现一只大呆瓜10 小时前
React-彻底搞懂 Redux:从单向数据流到 useReducer 的终极抉择
前端·react.js·面试
霍理迪10 小时前
Vue的响应式和生命周期
前端·javascript·vue.js