React中如何实现组件间的通信?

简介: React 中使⽤ Context 实现祖代组件向后代组件跨层级传值。

一.父组件向子组件通讯

父组件

import React from 'react'
import Head from './Head'
export default function index() {
  return (
    <div>
      <Head title = "标题" />
    </div>
  )
}

子组件

import React from 'react'
export default function Head(props) {
  return (
    <div>
      这是{props.title}
    </div>
  )
}

二.子组件向父组件通讯

父组件

import React from 'react'
import Head from './Head'
export default function index() {
  function back(msg) {
    console.log(msg);
  }
  return (
    <div>
      <Head back={back.bind(this)} />
    </div>
  )
}

子组件


         

三.跨层级通信

React 中使⽤ Context 实现祖代组件向后代组件跨层级传值。


详细介绍点击这里:React的context传值方法介绍

四.消息发布与订阅

1.安装

npm install pubsub-js

yarn add pubsub-js

2.引入

import pubsub from ‘pubsub-js’;


子组件发布

import React from 'react'
import pubsub from 'pubsub-js';
export default function Head() {
    function btnClick(){
        pubsub.publish('name', 'Hello world')//  publish 发布消息 消息名为:name 内容为:Hello world
    }   
    return (
        <div>
            <button onClick={btnClick}>点击我</button>
        </div>
    )
}

父组件订阅

import React, { useState, useEffect } from 'react'
import Head from './Head'
import pubsub from 'pubsub-js';
export default function index() {
  const [data, setData] = useState()
  useEffect(() => {
    // 订阅消息 消息名:name  第二个参数是一个函数
    // 此函数又有两个参数:消息名和消息数据,消息名不可以省略,可以是用_占位
    pubsub.subscribe("name", (_,res) => {
      setData(res)
    })
  }, []) //useEffect第二个参数写一个空数组,表示回调函数只会在第一次渲染页面后执行
  return (
    <div>
      {data}
      <Head></Head>
    </div>
  )
}

五.全局状态管理⼯具

可以借助 Redux 或 Mobx 等全局状态管理⼯具进⾏通信,它们会维护⼀个全局状态中⼼(Store),并可以根据不同的事件产⽣新的状态。


详细介绍点击这里:React中的redux的操作

相关文章
|
7月前
|
资源调度 前端开发 JavaScript
React 的antd-mobile 组件库,嵌套路由
React 的antd-mobile 组件库,嵌套路由
127 0
|
3月前
|
消息中间件 前端开发
React技术栈-组件间通信的2种方式
本文介绍了React技术栈中组件间通信的两种方式:通过props传递数据和使用消息发布(publish)-订阅(subscribe)机制,并通过实例代码展示了如何使用PubSubJS库实现跨组件通信。
59 11
React技术栈-组件间通信的2种方式
|
6月前
|
存储 前端开发 JavaScript
在React中有效地管理组件之间的通信和数据流
在React中有效地管理组件之间的通信和数据流
|
7月前
|
存储 前端开发 中间件
React组件间的通信
React组件间的通信
54 1
|
7月前
|
前端开发
React组件通信:如何优雅地实现组件间的数据传递
React组件通信:如何优雅地实现组件间的数据传递
201 0
|
7月前
|
前端开发 JavaScript API
React组件生命周期
React组件生命周期
122 1
|
7月前
|
前端开发 应用服务中间件 数据库
react服务端组件
react服务端组件
54 0
|
7月前
|
前端开发 JavaScript
快速上手React:从概述到组件与事件处理
快速上手React:从概述到组件与事件处理
|
7月前
|
资源调度 前端开发 JavaScript
React组件
React组件
65 0