React中的父子组件之间的传值通信

在父组件中,通过state的方式定义组件的参数进行初始化

// 定义App组件的状态值
  state = {
    msg: '我来自父组件',
    messageA: '', // 接受A组件信息
    messageB: '', // 接受B组件信息
  }

通过import调用子组件

// 组件引用
import PageA from './components/pageA'
import PageB from './components/pageB'

在父传子的过程中,只需要在父组件中定义参数,通过以下方式传值

在子组件中通过this.props.msg即可获取父组件的传值

 // 父组件向子组件传值
 <PageA msg={this.state.msg}/>
 <PageB msg={this.state.msg}/>


{/* 子组件中,通过this.props的方式接收父组件的传值 */}
<div style={{color: 'red'}}>A组件信息:{this.props.msg}</div>

在子组件向父组件传值的过程中,需要在父组件中定义接收子组件传值的函数,在子组件中通过this.props的方式调用父组件函数即可完成传值

//父组件中定义函数
  // 定义接收A组件的传值函数
  getMessageA = (message) =>{
    this.setState({
      messageA : message
    })
  }

  // 定义接收B组件的传值函数
  getMessageB = (message) =>{
    this.setState({
      messageB : message
    })
  }


//父组件中给子组件传函数
<PageA msg={this.state.msg} getMessageA = {this.getMessageA}/>
<PageB msg={this.state.msg} getMessageB = {this.getMessageB}/>


//子组件中调用父组件函数
// 定义向父组件传值的函数
  sendMessage = ()=>{
    this.props.getMessageA('你好,我来自A组件')
  }

// 定义向父组件传值的函数
  sendMessage = ()=>{
    this.props.getMessageB('你好,我来自B组件')
  }

完整代码:

App.jsx

import React, { Component } from 'react'

// 组件引用
import PageA from './components/pageA'
import PageB from './components/pageB'

export default class App extends Component {

  // 定义App组件的状态值
  state = {
    msg: '我来自父组件',
    messageA: '', // 接受A组件信息
    messageB: '', // 接受B组件信息
  }

  // 定义接收A组件的传值函数
  getMessageA = (message) =>{
    this.setState({
      messageA : message
    })
  }

  // 定义接收B组件的传值函数
  getMessageB = (message) =>{
    this.setState({
      messageB : message
    })
  }
  render() {
    return (
      <div>
        {/* 调用组件,msg={this.state.msg}:父向子传值方式,getMessageA = {this.getMessageA}:子向父传值方式 */}
        <PageA msg={this.state.msg} getMessageA = {this.getMessageA}/>
        <PageB msg={this.state.msg} getMessageB = {this.getMessageB}/>
        <div>
          <h2>这里是父组件信息:</h2>
          <div style={{color: 'red'}}>组件A发送的信息是:{this.state.messageA}</div>
          <div style={{color: 'red'}}>组件B发送的信息是:{this.state.messageB}</div>
        </div>
      </div>
    )
  }
}

PageA组件

import React, { Component } from 'react'

export default class PageA extends Component {

  // 定义向父组件传值的函数
  sendMessage = ()=>{
    this.props.getMessageA('你好,我来自A组件')
  }
  render() {
    return (
      <div>
        <h2>我是pageA组件</h2>
        {/* 子组件中,通过this.props的方式接收父组件的传值 */}
        <div style={{color: 'red'}}>A组件信息:{this.props.msg}</div>
        <button onClick={this.sendMessage}>点击我,向父组件发送信息</button>
      </div>
    )
  }
}

PageB组件

import React, { Component } from 'react'

export default class PageB extends Component {

  // 定义向父组件传值的函数
  sendMessage = ()=>{
    this.props.getMessageB('你好,我来自B组件')
  }
  render() {
    return (
      <div>
        <h2>我是pageB组件</h2>
        {/* 子组件中,通过this.props的方式接收父组件的传值 */}
        <div style={{color: 'red'}}>B组件信息:{this.props.msg}</div>
        <button onClick={this.sendMessage}>点击我,向父组件发送信息</button>
      </div>
    )
  }
}

效果如下:

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小灰灰学编程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值