返回顶部
首页 > 资讯 > 精选 >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://lsjlt.com/news/305227.html(转载时请注明来源链接)

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

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

    • 微信公众号

    • 商务合作