消息的订阅与发布(子组件间的通信)


一般我们在React中,子组件与子组件之间的通信都借助父组件来完成,

如下:

App.js(父组件)

import React, { Component } from 'react'
import Search from './components/Search'
import Content from './components/Content'

export default class App extends Component {
  state = {
    list:'',//存放search子组件传递过来的数据,同时交给Content子组件使用
  }
  // 获取值
  handleInfo  = (list) => {
    this.setState({list})
  }
  
  render() {
    return (
      
"container"> this.handleInfo}/> this.state.list}/>
) } }
(子组件)src/components/Search/index.jsx
import React, { Component } from 'react'

export default class Search extends Component {
 // 搜索
  search = () => {
    // 获取输入框中数据
    const {value} = this.inputworlds;
    this.props.handleInfo(value);//通过handleInfo方法向App.js传递数据,供子组件Content使用
  }
  
  render() {
    return (
      
"jumbotron">

"jumbotron-heading">子组件之间的通信

"text" placeholder="请输入用户名..." ref={e => this.inputworlds = e} /> 
) } }
(子组件)src/components/Content/index.jsx
import React, { Component } from 'react'

export default class Content extends Component {

  render() {
  // 获取search子组件传递过来的数据,进行渲染
    const {list} = this.props
    return (
      
"row"> {list}
) } }

上面这种方法,是通过父组件来进行子组件与子组件之间的通信,

1、通过在父组件存放状态、方法,

2、然后子组件1获取的数据通过父组件传递过来的props中的方法,传递给父组件App.js,

3、父组件App.js再通过props传递给子组件2,子组件2通过父组件传递过来的数据,this.props.XX来使用

第二种方便的:

消息的订阅与发布:

安装插件:

npm install pubsub-js
// 或者
yarn add pubsub-js