React父取子组件的参数

1

Parent

import React, {Component} from 'react'
import Children from './Children'

export default class Parent extends Component {
    constructor(props) {
        super(props)
        this.state = {
            childrenMsg: ''
        }
    }

    getChildrenMsg=(result, msg)=>{
        this.setState({
            childrenMsg: msg
        })
    }

    render() {
        return (
            <div style={{display:this.state.childrenMsg}}>
            //当使用父组件向子组建传函数时,不能含参,且调用的函数创建时必须使用箭头函数形式 或者 使用function加bind的形式。
                <Children get={ this.getChildrenMsg } /> 
            </div>
        )
    }
}

Children

import React, {Component} from 'react'

export default class Children extends Component {
    constructor(props) {
        super(props)
        this.state = {
            msg: 'none'
        }
    }

    toParent(index){
        console.log(index+1);
        // console.log(this.props.parent.getChildrenMsg.bind(this, this.state.msg))
        this.props.get(this, this.state.msg)
    }

    render() {
        return (
            <div>
            //子组件使用的最稳妥的函数形式,即onClick后跟空箭头函数的形式,这样调用的函数可以使用任何方式创建且不用bind
                <button onClick={()=>this.toParent(2) }>
                子组件传入给父组件</button>
            </div>
        )
    }
}

2 参考连接https://www.jianshu.com/p/ccc15c5963c4

Parent

import React, {Component} from 'react'
import Children from './Children'

export default class Parent extends Component {
    constructor(props) {
        super(props)
        this.state = {
            name: '我是父组件',
            msg: '父组件传值给子组件',
            childrenMsg: ''
        }
    }

    getChildrenMsg = (result, msg) => {
        // console.log(result, msg)
        // 很奇怪这里的result就是子组件那bind的第一个参数this,msg是第二个参数
        this.setState({
            childrenMsg: msg
        })
    }

    render() {
        return (
            <div>
                <h2>{ this.state.name }</h2>
                <h3>子组件传来的值为:{ this.state.childrenMsg }</h3>
                <h3>我要引入子组件了:</h3>
                <hr/>
                <Children parent={ this } />
            </div>
        )
    }
}

Children

import React, {Component} from 'react'

export default class Children extends Component {
    constructor(props) {
        super(props)
        this.state = {
            name: '我是子组件',
            msg: '子组件传值给父组件'
        }
    }

    toParent = () => {
        // console.log(this.props.parent.getChildrenMsg.bind(this, this.state.msg))
        this.props.parent.getChildrenMsg(this, this.state.msg)
    }

    render() {
        return (
            <div>
                <h2>{ this.state.name }</h2>
                <button onClick={ this.toParent }>子组件传入给父组件</button>
            </div>
        )
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值