IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> [react基础] 组件传值 父传子props 父子互传ref 跨级context -> 正文阅读

[JavaScript知识库][react基础] 组件传值 父传子props 父子互传ref 跨级context

1. 父传子

自定义属性+props

通过自定义属性的方式向子组件传值,子组件通过this.props.值名称接收使用
父:

import React, { Component } from 'react'

export default class Father extends Component {
    constructor() {
        super();
        this.state = {
            msg:"父组件的msg"
        }
    }
    render() {
        return (
            <div className="Father">
                <h2>Father</h2>
                <Child msg={this.state.msg}></Child>
            </div>
        )
    }
}

子组件接收
在这里插入图片描述

父传子 ref

父传子 ref 方法一:直接调子组件的setState

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

父传子 ref 方法二:调用子组件中的方法

在这里插入图片描述
在这里插入图片描述

2. 子传父

事件传值

原理:还是父传子的原理,只不过父组件传递给子组件的不是数据,而是一个方法。
子组件依然通过 this.props 调用。通过调用父组件传过来的方法,并传递参数的方式,把需要传递的值以父组件传来的方法的参数的形式传递给父组件。从而达到子传父的目的。

父组件接收:

import React, { Component } from 'react'
import Child from './Child.jsx'

export default class Father extends Component {
    constructor() {
        super();
        this.state = {
            msg: ""
        }
    }
    render() {
        return (
            <div>
                <h2>Father</h2>
                {/* 父组件给子组件传递一个自身的函数,子组件通过调用函数的方式传值给父组件 */}
                <Child getMsgHandler={this.getMsgHandler.bind(this)}></Child>
            </div>
        )
    }
    
    {/* 在传递的方法中,接收数据 */}
    getMsgHandler(val){
        this.setState({
            msg:val
        })
    }
}

子组件传递:

import React, { Component, Fragment } from 'react'

export default class Child extends Component {
    constructor() {
        super();
        this.state = {
            msg: "子组件的msg"
        }
    }
    render() {
        return (
            <div className="Child">
                <h2>子组件</h2>
                {/* 点击按钮触发父组件传过来的函数 */}
                <button onClick={this.clickHandler.bind(this)}>给父级发送msg</button>
            </div>
        )
    }
    clickHandler() {
        {/* 把需要传递给父组件的值当做参数传进去 */}
        this.props.getMsgHandler(this.state.msg)
    }
}

注意:用bind解决函数this指向为undifined的问题,
或者,用箭头函数

在这里插入图片描述

在这里插入图片描述

子传父 ref

在这里插入图片描述

在这里插入图片描述

3. 跨组件传值

context实现跨级父子组件间的通信

在这里插入图片描述
创建一个context对象
在这里插入图片描述
src\context\appContext.js

// context数据仓库对象

// 1.得到创建context对象的方法
import { createContext } from 'react'

// 2.得到context对象
const ctx = createContext()

// 3.context对象,它提供两个组件,必须解构出来
// Provider 发布/生产
// Consumer 消费
let { Provider, Consumer } = ctx

// 4.导出
export {
  // 默认导出
  ctx as default,
  // 按需导出
  Provider,
  Consumer
}

1. 只获取

App.js
在这里插入图片描述

Child.jsx

在这里插入图片描述
在这里插入图片描述

2. 获取+修改

在这里插入图片描述
Child.jsx
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述



参考:
react 中的组件传值

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2021-12-06 15:09:45  更:2021-12-06 15:11:08 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 8:27:17-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码