美文网首页web 杂谈Web前端之路React Native开发经验集
React 组件之间的通信1——之父子之间的通信

React 组件之间的通信1——之父子之间的通信

作者: 高少辉_骚辉 | 来源:发表于2017-05-30 09:42 被阅读1561次

父组件和子组件之间的通信

分两种情况

  • 父组件 => 子组件
  • 子组件 => 父组件

下面我们就分别来介绍一下

父组件 => 子组件

这个最常见,父组件通过 props 向子组件传递需要的信息。因为 React 的通信方式是单向的,故此方法只适用于 父组件 => 子组件。下面来看一个例子:

import React,{ Component } from 'react'

class Father extends Component {
    render (){
        let data = 'This is father data'
        return <div>
            <Child fatherToChild={ data } />
        </div>
    }
}
class Child extends Component {
    static propTypes = {
        fatherToChild: PropTypes.string
    }
    render (){
        const {props} = this
        return <div>
            <h1>{ props.fatherToChild }</h1>
        </div>
    }
}

子组件 => 父组件

说白了,就是利用父组件向子组件通信时 props 可以传任何类型,包括函数的特性,然后使用回调把值传给父组件。

  • 自己调用回调
  • 自定义事件回调
import React,{ Component } from 'react'

class Father extends Component {
    constructor (props){
        super(props)
        this.state = {
            data: 'wait child to father'
        }
    }
    fatherHandleClick(data){
        this.setState({
            data
        })
    }
    render (){
        
        return <div>
            <Child fatherHandleClick={ this.fatherHandleClick.bind(this) } />
            <h1>{this.state.data}</h1>
        </div>
    }
}
class Child extends Component {
    static defaultProps = {
        fatherHandleClick:()=>{}
    }
    static propTypes = {
        fatherHandleClick: PropTypes.func
    }
    render (){
        const {props} = this
        return <div onClick={ ()=>{
            this.props.fatherHandleClick('child to father')
        } }>
            <h1>This is Child.</h1>
        </div>
    }
}

相关文章

网友评论

    本文标题:React 组件之间的通信1——之父子之间的通信

    本文链接:https://www.haomeiwen.com/subject/drtrfxtx.html