前端基础之《React(11)—state声明式》

一、如何定义state

1、在类组件中,在constructor()构造函数中使用this.state={}来定义

2、在函数式组件中,自React16.8以后,可以使用useState()来定义

二、如何使用state

1、在类组件中,通过this.state来访问声明式变量

javascript 复制代码
import { Component } from 'react';

class A extends Component {

    constructor(props) {
        super(props); // 调用父类的构造函数

        // 定义state
        this.state = {
            num: 1,
        };
    }
    
    // 类组件一定要有render方法,因为render返回值就是组件的DOM结构
    render() {

        // 建议在类组件中解构state
        const { num } = this.state;
        
        return (
            <div>
                <h1>类组件</h1>
                <h1>{ num }</h1>
            </div>
        );
    }
}

export default A;

2、在函数式组件中,直接访问useState的结果

三、如何正确地修改state声明式变量

1、在类组件中,使用专属方法this.setState()来修改

2、在函数式组件中,使用useState()返回值的第二个参数来修改

3、this.setState两种写法

(1)this.setState({}),对象语法

(2)this.setState((state,props)=>{}) ,回调函数语法

(3)例子

javascript 复制代码
    // 自定义方法
    add () {
        // 这种写法是没问题的,但不够优雅。因为你要修改的state新值是由旧值计算而来的
        // 所以建议使用函数式写法,this.setState((state,props)=>{})
        // 用旧值state参与运算,得到新值
        this.setState({
            num: this.state.num + 1, 
        });
    }

4、this.setState是异步的,所以有第二个参数callback,表示声明式变量修改已完成

this.setState({}, callback)

this.setState((state,props)=>({}, callback))

相关推荐
曹牧5 小时前
C#:空合并运算符
java·前端·数据库
小羊没烦恼!6 小时前
铁道部新客票系统设计(二)
开发语言·前端·数据库·python·oracle·c#·php
智能直播9 小时前
RK3518:1.5G 内存 + 8G 存储,如何跑起硬件编解码、Web、AI 识别、绿幕特效
前端·人工智能·5g
掘金酱10 小时前
【10.24 特别活动】AI 时代,程序员的新饭碗在哪里?
前端·人工智能·后端
excel10 小时前
多进程环境下使用 PM2 部署 Socket.IO:需要注意什么
前端
IT_陈寒10 小时前
Redis的原子性竟然失效了?记一次分布式锁翻车实录
前端·人工智能·后端
时间的情敌12 小时前
《回顾 2018 前端:Vue2 成熟期,Webpack4 发布,PWA 大火》
前端
Java后端的Ai之路12 小时前
前端技术Vue-09-webpack-vuejs-实战
前端·vue.js·webpack
LMT流氓兔12 小时前
第五单元——第4课:给工具参数加校验
java·前端·算法·ai·langchain
涛涛ing13 小时前
React Compiler正式“Rust化”:你项目里的Babel插件,正在被编译进打包器
前端