时间:2021-05-26
通讯是单向的,数据必须是由一方传到另一方。
1.父组件与子组件间的通信。
在 React 中,父组件可以向子组件通过传 props 的方式,向子组件进行通讯。
父组件 App.js
import React, { Component } from 'react';import './App.css';import Child from './child'class App extends Component { constructor(props){ super(props); this.state={ msg:'父类的消息', name:'John', age:99 } } callback=(msg,name,age)=>{ // setState方法,修改msg的值,值是由child里面传过来的 this.setState({msg}); this.setState({name}); this.setState({age}); } render() { return ( <div className="App"> <p> Message: {this.state.msg}</p> <Child callback={this.callback} age={this.state.age} name={this.state.name}></Child> </div> ); }}export default App;父组件中,state里面有三个属性,分别是msg,name和age,在子组件child中,如果想拿到父组件里面的属性,就需要通过props传递。
在 <Child></Child> 标签里面添加
name={this.state.name} age={this.state.age}写成
name和age分别是你要传递的属性。
子组件 Child
import React from "react";class Child extends React.Component{ constructor(props){ super(props); this.state={ name:'Andy', age:31, msg:"来自子类的消息" } } change=()=>{ this.props.callback(this.state.msg,this.state.name,this.state.age); } render(){ return( <div> <div>{this.props.name}</div> <div>{this.props.age}</div> <button onClick={this.change}>点击</button> </div> ) }}export default Child;在子组件中,通过 {this.props.name} {this.props.age}就能拿到父组件里面的数据。
呈现在页面上的就是这个样子。
其中 John,99均来自于父组件App.js
2.子组件向父组件通信
子组件向父组件通讯,同样也需要父组件向子组件传递 props 进行通讯,只是父组件传递的,是作用域为父组件自身的函数,子组件调用该函数,将子组件想要传递的信息,作为参数,传递到父组件的作用域中。
上面例子中,在子组件Child中绑定了onClick事件。 调用this.change方法。
注意change函数采用了箭头函数的写法 change=()=>{},目的是为了改变this的指向。使得在函数单独调用的时候,函数内部的this依然指向child组件
如果不使用箭头函数,而是采用普通的写法
则需要在 constructor中绑定this,
或者在onClick方法中绑定this,
在change方法中,通过props发送出去一个方法,比如说叫callback方法,父组件中去接收这个方法,callback={this.callback},然后在自身的callback函数中进行一些列操作。
本例中,函数callback中就是通过调用 setState方法来改变值。
点击按钮后页面显示:
可以看到,我们既实现了通过props将父组件里面的数据传递给子组件的效果,也实现了通过子组件按钮点击事件,将子组件里面的数据发送给父组件
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
这两天学习了React感觉组件通信这个地方知识点挺多的,而且很重要,所以,今天添加一点小笔记。父子组件通讯通讯手段这是最常见的通信方式,父组件只需要将子组件需要
vue中我们常常用到组件.那么组件总体可以分为如下的几种关系.父子组件,爷孙组件,兄弟组件.这几种组件之间是如何通信的呢?父子组件通信根据vue中的文档
在vue组件通信中其中最常见通信方式就是父子组件之中的通信,而父子组件的设定方式在不同情况下又各有不同。最常见的就是父组件为控制组件子组件为视图组件。父组件传
本文实例讲述了vue实现父子组件之间的通信以及兄弟组件的通信功能。分享给大家供大家参考,具体如下:ponents:{"gSon":{template:"#vgs
本人对Vue组件间通信不懂,搜索了很多关于Vue父子组件间通信介绍,下面我来记录一下,有需要了解Vue父子组件、组件间通信的朋友可参考。希望此文章对各位有所帮助