react 嵌套组件的通信

react

react中经常会用到的组件嵌套,如下:

图中 parent本身是一个自定义的组件,然后内部又加入了 child的自定义组件,那么这种情况,父子之间如何通信

react中在父组件里面有一个 this.props.children  当没有子组件时,值为 undefined ,只有一个子组件时,为一个对象,多个子组件时为一个数组

我们可以使用react提供的方法遍历子组件,并且绑定

代码如下:

child.jsx

import React, { Component } from 'react';

class Child extends Component {

constructor(props){

super(props);

this.state = {date: new Date()};

}

showValue=()=>{

this.props.showValue && this.props.showValue()

}

render() {

return (

<div className="Child">

<div className="content">

Child

<button onClick={this.showValue}>调用父的方法</button>

</div>

</div>

);

}

}

export default Child;

  

在 parent.jsx中

import React, { Component } from 'react';

class Parent extends Component {

constructor(props){

super(props);

this.state = {date: new Date()};

}

showValue=()=>{

console.log("showValue....")

}

renderChildren(props) {

//遍历所有子组件

return React.Children.map(this.props.children, child => {

var childProps = {

//把父组件的props.name赋值给每个子组件(父组件传值给子组件)

name: props.name,

//父组件的方法挂载到props.showValue上,以便子组件内部通过props调用

showValue:this.showValue

};

return React.cloneElement(child,childProps );

});

}

render() {

return (

<div className="Parent">

<div className="content">

Parent

{this.renderChildren(this.props)}

</div>

</div>

);

}

}

export default Parent;

  

关键在于:遍历内部的子组件,然后动态的给子组件绑定props

以上是 react 嵌套组件的通信 的全部内容, 来源链接: utcz.com/z/382586.html

回到顶部