React-学习笔记(7-组件间通信的几种方式)

文章详细阐述了在React中如何进行组件间的通信,包括父组件通过Props向子组件传递数据,子组件如何通过回调函数向父组件传递数据,以及使用PubSub-js库实现任意组件间的消息订阅与发布,以此实现更灵活的状态管理。

目录

1、父组件向子组件传递数据(Props)

2、子组件向父组件传递数据

3、任意组件间通信(消息订阅与发布)


1、父组件向子组件传递数据(Props)

        父组件:

import React, { Component } from 'react'

// 引入子组件
import Children from '../Children/Children'

export default class Parent extends Component {
    render() {
        let curTime = new Date().toLocaleDateString();
        curTime = curTime.replaceAll('/',' - ');
        return (
            <div>
                {/* 展示子组件,给子组件传递一个数据 */}
                <Children curTime={curTime}/>
            </div>
        )
    }
}

        下载 prop-types,给 props 添加约束:

npm i prop-types
import React, { Component } from 'react'
// 引入 prop-types
import propTypes from 'prop-types'

export default class Children extends Component {
    // 配置 props 约束
    static propTypes = {
        // 字符串类型,必须
        // curTime:propTypes.string.isRequired       // 这样写,即使是空字符串也满足

        // 自定义校验方式,第一个参数为一整个props对象,第二个参数为当前约束属性名,第三个对象为当前组件名
        curTime:(prop, propName, componentName)=>{
            // 当父组件Parent传递字符串为:2023 - 4 - 26 时,输出为 
            // Object:{curTime:'2023 - 4 - 26'}  curTime  Children
            console.log(prop,propName,componentName);
            
            let temp = prop[propName].split('-');
            if(temp.length !== 3){              // 简单的用拆分字符串的形式来检查一下
                return new Error('格式错误');    // 校验不通过需要返回一个错误对象,会在控制台中打印
                // 即使不通过,返回了一个错误对象,该不满足要求的数据仍然会展示到页面对应位置中
            }
       
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

bodyHealthy

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

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

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

打赏作者

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

抵扣说明:

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

余额充值