广告
返回顶部
首页 > 资讯 > 精选 >React的组件通讯是什么
  • 119
分享到

React的组件通讯是什么

2023-06-25 13:06:33 119人浏览 薄情痞子
摘要

本篇文章为大家展示了React的组件通讯是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。组件通讯介绍内容组件是独立且封闭的单元,默认情况下,只能使用组件自己的数据。在组件化过程中,我们将一个完整

本篇文章为大家展示了React的组件通讯是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

    组件通讯介绍

    内容

    • 组件是独立且封闭的单元,默认情况下,只能使用组件自己的数据。

    • 在组件化过程中,我们将一个完整的功能拆分成多个组件,以更好的完成整个应用的功能。

    • 而在这个过程中,多个组件之间不可避免的要共享某些数据

    • 为了实现这些功能,就需要打破组件的独立封闭性,让其与外界沟通。这个过程就是组件通讯。

    三种方式

    • 父子组件之间

    • 兄弟组件之间

    • 跨组件层级

    小结

    组件中的状态是私有的,也就是说,组件的状态只能在组件内部使用,无法直接在组件外使用

    组件通讯-父传子

    内容:

    • 父组件提供要传递的state数据

    • 给子组件标签添加属性,值为 state 中的数据

    • 子组件中通过 props 接收父组件中传递的数据

    核心代码

    父组件提供数据并且传递给子组件

    class Parent extends React.Component {    state = { lastName: '王' }    render() {        return (            <div>                传递数据给子组件:<Child name={this.state.lastName} />            </div>        )    }}

    子组件接收数据

    function Child(props) {return <div>子组件接收到数据:{props.name}</div>}

    组件通讯-子传父

    思路

    利用回调函数,父组件提供回调,子组件调用,将要传递的数据作为回调函数的参数。

    步骤

    父组件

    定义一个回调函数f(将会用于接收数据)

    将该函数f作为属性的值,传递给子组件

    子组件

    通过 props 获取f

    调用f,并传入将子组件的数据

    核心代码

    父组件提供函数并且传递给子组件

    class Parent extends React.Component {    state: {      num: 100    }    f = (num) => {        console.log('接收到子组件数据', num)    }    render() {        return (            <div>            子组件:<Child f={this.f} />            </div>        )    }}

    子组件接收函数并且调用

    class Child extends React.Component {    handleClick = () => {      // 调用父组件传入的props,并传入参数    this.props.f(100)    }    return (    <button onClick={this.handleClick}>点我,给父组件传递数据</button>    )}

    小结

    子传父:在子组件中调用从父组件中定义的方法,并根据需要传入参数

    组件通讯-兄弟组件

    在React中没有确定的兄弟组件,就没有这个说法哈,有的只有状态提升.

    思路

    • 将共享状态提升到最近的公共父组件中,由公共父组件管理这个状态

    • 思想:状态提升

    • 公共父组件职责:

      • 提供共享状态

      • 提供操作共享状态的方法

    • 要通讯的子组件只需通过 props 接收状态或操作状态的方法

    React的组件通讯是什么

    核心代码

    parent.js

    import React, { Component } from 'react'import ReactDOM from 'react-dom'import Jack from './Jack'import Rose from './Rose'class App extends Component {  // 1. 状态提升到父组件  state = {    msg: '',  }  render() {    return (      <div>        <h2>我是App组件</h2>        <Jack say={this.changeMsg}></Jack>        {}        <Rose msg={this.state.msg}></Rose>      </div>    )  }  changeMsg = (msg) => {    this.setState({      msg,    })  }}// 渲染组件ReactDOM.render(<App />, document.getElementById('root'))

    Son1.js

    import React, { Component } from 'react'export default class Jack extends Component {  render() {    return (      <div>        <h4>我是Jack组件</h4>        <button onClick={this.say}>说</button>      </div>    )  }  say = () => {    this.props.say('you jump i look')  }}

    Son2.js

    import React, { Component } from 'react'export default class Rose extends Component {  render() {    return (      <div>        <h4>我是Rose组件-{this.props.msg}</h4>      </div>    )  }}

    组件通讯 -跨级组件通讯

    想在Vue中使用跨级组件通讯,需要使用Context

    使用Context的步骤

    共三步:

    导入并调用createContext方法,从结果中解构出 Provider, Consumer 组件

    import { createContext } from 'react'const { Provider, Consumer } = createContext()

    使用 Provider 组件包裹根组件,并通过 value 属性提供要共享的数据

    return (  <Provider value={ 这里放要传递的数据 }>  <根组件的内容/>  </Provider>)

    在任意后代组件中,使用第2步中导出的Consumer组件包裹整个组件

    return (<Consumer>  {      (data) => {      // 这里的形参data 就会自动接收Provider中传入的数据        // console.log(data)      return <组件的内容>    }    }  </Consumer>)

    落地代码

    建立context.js文件

    import { createContext } from 'react'const { Provider, Consumer } = createContext()export { Consumer, Provider }

    改造根组件

    import { Provider } from './context'render () {    return (      <Provider value={{ num: this.state.num }}>        <div>          根组件, num: {this.state.num}          <Parent />          <Uncle />        </div>      </Provider>    )  }

    改造后代组件 Uncle.js

    import React from 'react'import { Consumer } from './context'export default class Uncle extends React.Component {  render () {    return (      <Consumer>        {(data) => {          return <div>我是Uncle组件, {data.num}</div>        }}      </Consumer>    )  }}

    上述内容就是React的组件通讯是什么,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注编程网精选频道。

    --结束END--

    本文标题: React的组件通讯是什么

    本文链接: https://www.lsjlt.com/news/305227.html(转载时请注明来源链接)

    有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

    本篇文章演示代码以及资料文档资料下载

    下载Word文档到电脑,方便收藏和打印~

    下载Word文档
    猜你喜欢
    • React的组件通讯是什么
      本篇文章为大家展示了React的组件通讯是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。组件通讯介绍内容组件是独立且封闭的单元,默认情况下,只能使用组件自己的数据。在组件化过程中,我们将一个完整...
      99+
      2023-06-25
    • 详解React的组件通讯
      目录组件通讯介绍内容三种方式小结组件通讯-父传子内容:核心代码子组件接收数据组件通讯-子传父思路步骤核心代码小结组件通讯-兄弟组件思路核心代码组件通讯 -跨级组件通讯使用Contex...
      99+
      2022-11-12
    • React中组件之间通信的方式是什么
      本篇内容介绍了“React中组件之间通信的方式是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、是什么我们将组件间通信可以拆分为两个词...
      99+
      2023-06-20
    • angular组件通讯和组件生命周期是什么
      本文小编为大家详细介绍“angular组件通讯和组件生命周期是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“angular组件通讯和组件生命周期是什么”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深...
      99+
      2022-10-19
    • react状态组件是什么
      这篇文章主要介绍了react状态组件是什么,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。 react状态组件有2...
      99+
      2022-10-19
    • React组件间怎么通信
      本文小编为大家详细介绍“React组件间怎么通信”,内容详细,步骤清晰,细节处理妥当,希望这篇“React组件间怎么通信”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。一、父子组件...
      99+
      2022-10-19
    • react高阶组件指的是什么
      这篇文章主要介绍了react高阶组件指的是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇react高阶组件指的是什么文章都会有所收获,下面我们一起来看看吧。 ...
      99+
      2022-10-19
    • react受控组件指的是什么
      这篇文章主要介绍“react受控组件指的是什么”,在日常操作中,相信很多人在react受控组件指的是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”react受控组件指的是...
      99+
      2022-10-19
    • react父子组件指的是什么
      这篇文章主要介绍了react父子组件指的是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇react父子组件指的是什么文章都会有所收获,下面我们一起来看看吧。 ...
      99+
      2022-10-19
    • react中受控组件指的是什么
      本文小编为大家详细介绍“react中受控组件指的是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“react中受控组件指的是什么”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。...
      99+
      2022-10-19
    • React组件的三种写法是什么
      这篇文章将为大家详细讲解有关React组件的三种写法是什么,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。React 专注于 view 层,组件化则是 React 的基础,...
      99+
      2022-10-19
    • react非受控组件指的是什么
      这篇文章主要介绍“react非受控组件指的是什么”,在日常操作中,相信很多人在react非受控组件指的是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”react非受控组件...
      99+
      2022-10-19
    • React组件的生命周期是什么
      这篇文章主要讲解了“React组件的生命周期是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“React组件的生命周期是什么”吧!React生命周期1、初始化阶段componentDidM...
      99+
      2023-07-05
    • react路由常用组件是什么
      这篇文章给大家分享的是有关react路由常用组件是什么的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。react路由常用组件有:1、BrowserRouter,设置路由模式为his...
      99+
      2022-10-19
    • React 组件间怎么实现通信
      本篇文章给大家分享的是有关React 组件间怎么实现通信,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。父子组件通讯通讯手段这是最常见的通信方式...
      99+
      2022-10-19
    • React函数式组件与类组件的不同点是什么
      本文小编为大家详细介绍“React函数式组件与类组件的不同点是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“React函数式组件与类组件的不同点是什么”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。区别区别函...
      99+
      2023-06-29
    • Vue2 的12种组件通讯
      目录1.props2..sync3.v-model4.ref5.$emit/v-on6.$attrs/$listeners7.$children/$parent8.provide/i...
      99+
      2022-11-12
    • react推荐函数组件的原因是什么
      这篇文章主要讲解了“react推荐函数组件的原因是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“react推荐函数组件的原因是什么”吧!原因:1、函数组件语法更短、更简单,这使得它更容易...
      99+
      2023-07-04
    • react hooks组件间的传值方式是什么
      这篇文章给大家介绍react hooks组件间的传值方式是什么,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。父传子通过props传值,使用useState来控制state的状态值父组件 Father.tsx里:子组件 ...
      99+
      2023-06-25
    • React父子组件间的通信是怎样进行的
      目录父子组件通信方式父传子子传父ref标记(传递数据)非父子组件通信方式状态提升(兄弟通信)发布订阅模式context状态树传参(跨组件方案)React插槽children实现插槽多...
      99+
      2023-03-14
      React父子组件通信 React组件通信
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作