React 三大组件

ref属性

  • 是一种引用的写法

  • 如果只创建了一个ref容器,但多个节点使用了同一个ref容器,则最后的会覆盖掉前面的节点,你通过this.ref容器.current拿到的那个节点是最后一个节点

  • 当react执行到div中第一行时,发现input节点写了一个ref属性,又在上面创建了myRef容器,所以它就会把当前的value存到组件实例的myRef容器中

    import React, { Component } from 'react'
    
    export default class Up extends Component {
        myr = React.createRef()
        render() {
            return (
                <div>
                    <input type='text' ref={this.myr}></input>
                    <button onClick={this.aaa}>
                    点击
                    </button>
                </div>
            )
        }
        aaa = () => {
            console.log(this.myr.current.value);
        }
    }
    

    state(状态)

  • State是可变的,是一组用于反映组件UI变化的状态集合。

  • 状态就是组件描述某种显示情况的数据了由组件自己设置和更改,也就是说由组件自己维护,使用状态的目的就是为了在不同的状态下使组件的显示不同(自己管理)

  • 声明式 是组件内部的数据载体

  • 状态数据不能直接赋值,需要用setState()当每次 触发这个方法就会重新渲染组件

  • 通过更改state的值来达到更新页面显示(重新渲染组件)

export default class Up extends Component {
    state = {
        name: '选择'
    }
    render() {
        return (
            <div>
                <h2>随机选择一只猫猫</h2>
                <button onClick={
                    this.cat
                }>{this.state.name?'选择':'缅因'}
                </button>
            </div>
            )}
    
    cat = () => {
        console.log(this.state.name);
        this.setState({
            name: !this.state.name
        })
}}

 

setstate
  • setstate处在同步的逻辑中,异步更新状态,更新真实dom

  • setstate处在异步的逻辑中,同步更新状态,同步更新真实dom

  • setstate接受第二个参数 第二个参数式回调函数 状态和dom更新完后就会触发

  • 本身执行的过程和代码都是同步的,只是合成事件和钩子函数的调用顺序在更新之前,导致在合成事件和钩子函数中没法立马拿到更新后的值,所以形成了所谓的‘异步’。

  • setState是通过队列机制实现state更新,内部会维护一个update Queue,同时更新一个同名属性时,后面会覆盖前面,且只执行最后一次更新。

props属性

  • 每个组件都会有props属性

  • 组件标签的所有属性都保存在props

  • 组件内部不能改变外部传进来的props属性值

  • 如果要传布尔值 加上{ true/false } 否则会认为是字符串

// 引入class组件  
import Upp from './Component/ref_1'
//创建父类组件
export default class Up extends Component {
    render() {
        return (
            <div>
            //发送要传的值
                <upp kind=32 name='猫'></upp>
            </div>
        )
    }
}



//在子类里面接收
import React, { Component } from 'react'

export default class Upp extends Component {
    render() {
    //用es6的写法接收一下父组件传过来的值
        let {name,kind}=this.props
        return (
            <div>
                <p>{name}</p>
                <p>{kind}</p>
            </div>
        )
    }
}

props和state属性的区别

props 是组件对外的接口,state 是组件对内的接口。

主要区别:

  • State是可变的,是一组用于反映组件UI变化的状态集合。

  • 而Props对于使用它的组件来说,是只读的,要想修改Props,只能通过该组件的父组件修改

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值