React类组件写法

React 类组件的说明

有state,有生命周期,有this
在这里插入代码片相对无状态组件来说,它的性能较差、渲染速度也更慢

state
特点1:单向绑定,state变化视图自动更新,视图变化state不更新的
特点2:单向数据流,数据只能向下传递
特点3:state不能直接修改,要使用 this.setState()来修改
特点4:this.setState()是异步的,但在定时器里是同步的
特点5:多个this.setState()同时发生时,会被react合并成一个this.setState({})
通过{this.add.bind(this)来绑定事件

import React from 'react'
import { Child1 } from '@/components'


`export default class TestState extends React.Component {
    // 构造器函数,当类被实例化时调用
    constructor(props) {
        super(props) // 调用父组件的构造器函数,必须是当前构造器第一行代码
        // 单向绑定,state变化视图自动更新,视图变化state不更新的
        this.state = {
            msg: 'hello 2005',
            count: 1
        }
    }

    // 自定义方法
    changeMsg() {
        this.setState({
            msg: 'hello 2007'
        }, ()=>{
            console.log('msg 更新完成')
        })
    }

    add() {
        // this.setState({count: this.state.count+1})
        // this.setState(function(state, props){
        //     return {
        //         count: state.count+1
        //     }
        // })
        this.setState((state, props)=>({count:state.count+1}))
    }

    sub() {
        // this.setState({count: this.state.count-1})
        // this.setState(function(state, props) {
        //     return {
        //         count: state.count-1
        //     }
        // })
        this.setState((state, props)=>({count:state.count-1}))
    }

    
    // 定义类组件时,这唯一的一个必须的生命周期
    render() {
        // 写任何的代码运算
        let { msg, count } = this.state

        return (
            <div>
                <h1>测试state</h1>
                <h1>{msg}</h1>
                <Child1 msg={msg} />
                <button onClick={this.changeMsg.bind(this)}>改变msg</button>
                <hr />
                <h1>{count}</h1>
                <button onClick={this.add.bind(this)}></button>
                <button onClick={this.sub.bind(this)}></button>
            </div>
        )
    }
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值