前端基础之《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))

相关推荐
曦樂~2 小时前
【Web Development】02 CSS
前端·css
风骏时光牛马3 小时前
后端服务接口开发与数据逻辑处理
前端
东鹏特饮3 小时前
经典打砖块(Breakout)游戏
前端·css·css3
IT_陈寒3 小时前
Vite的HMR把我整不会了:一个生产环境的热更新坑
前端·人工智能·后端
Mh3 小时前
如何使用双缓冲优化视频切换
前端
Highcharts.js3 小时前
Highcharts Orbit 完全指南:把每一张图表变成交互式分析工具
react.js·前端框架·highcharts·orbit·使用指南·ai 图表·交互式分析工具
risenav3 小时前
低头蓄力,抬头起跳:《萤虫跳跳》的 Rokid AIUI 开发实战
前端
ZhengEnCi4 小时前
如何看待 Fable 5.2 用纯代码生成 1.4MB 视觉作品:光追、水面、倒影、火光的程序化生成原理
前端
再吃一根胡萝卜4 小时前
DSH 插件的 Host 与 Client:为什么「只加载了 Host」,以及要不要自己写 Client 加载器
前端
parade岁月5 小时前
AI 写的前端代码为什么总像 5 年前的?Chrome 官方出手了
前端