react 中setState 的三种写法

目录

1:使用对象形式的setState:

2:使用函数形式的setState:

3:使用回调函数:


1:使用对象形式的setState

this.setState({ count: 0 });

2:使用函数形式的setState:

this.setState((prevState,props) => {
  return { count: prevState.count + 1 };
});

 

3:使用回调函数

this.setState({ count: this.state.count + 1 }, () => {
  console.log('状态已更新,组件已重新渲染');
});

完整示例:

import React, { Component } from 'react';

class Counter extends Component {
    constructor(props) {
        super(props);
        this.state = {
            count: 0,
        };
    }

    increment = ()=> {
        // 使用对象形式的 setState
        this.setState({
            count: this.state.count + 1
        });

        // 使用函数形式的 setState
        this.setState((prevState,props) => {
            console.log(prevState.count)
            console.log(props)
            return { count: prevState.count + 1 };
        });

        // 使用回调函数
        this.setState({
            count: this.state.count + 1
        },
            () => {
            console.log('状态已更新,组件已重新渲染');
        });
    }

    render() {
        const {count} = this.state
        return (
            <div>
                <p>Count: {count}</p>
                <button onClick={this.increment}>增加计数</button>
            </div>
        );
    }
}

export default Counter;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大大怪~将军

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值