首先要知道React的组件间通讯是单向的。数组必须是由父级传到子级或者子级传递给父级层层传递。
如果要给兄弟级的组件传递数据,那么就要先传递给父级而后在传递给你要传递到的组件位置。
父级组件向子级组件传递数据
在React中,父组件可以向子组件通过传props的方式,向子组件进行通讯。
父组件 App.js
import React, { Component } from 'react';
import './App.css';
import Child from './child'
export default 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>
);
}
}
子组件 Child
import React from "react";
export default 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>
)
}
}
子组件向父组件通信
子组件向父组件通信,同样也需要父组件向子组件传递props进行通讯,只是父组件传递的是作用域为父组件自身的函数,子组件调用该函数,将子组件想要传递的信息,作为参数,传递到父组件的作用域中。