react--父子组件传参

新增Child.js文件

import React from 'react';

export default class Child extends React.Component{
    render(){
        return (
            <div>
                <p>我是子组件</p>
                <p>{this.props.value}</p>
            </div>
        )
    }
}

修改Home2.js文import React from 'react';

import {Link} from "react-router-dom";
import Child from './Child';

export default class Home2 extends React.Component{
    constructor(props){
        super(props);
        this.state = {
            father: 'father'
        }
    }

    changeRoute = () => {
        this.props.history.push('/twoPage');
    };

    render(){
        return (
            <div>
                <div>
                    <p>我是Home2组件</p>
                    <Link to="/onePage">点我跳转到one页面</Link><br/>
                    <Link to="/twoPage/2">点我跳转到two页面</Link><br/>
                    <Link to="/this">点我跳转到this页面</Link>
                    <p onClick={this.changeRoute}>点我试试</p>
                </div>
                <div>
                    <p>我是父组件</p>
<Child value={this.state.father} /> </div> </div> ) } }
父传子
import进来的组件名是什么,标签名就是什么,然后value这个key是随便起的,但要跟Child组件里的this.props.value一致就OK
比如
<Child str={this.state.father} />
对应的Child里的获取key要改成<p>{this.props.str}</p>  这跟路由系统的to和path要一致是一个道理

子传父

父组件Home2.js
import React from 'react';
import {Link} from "react-router-dom";
import Child from './Child';

export default class Home2 extends React.Component{
    constructor(props){
        super(props);
        this.state = {
            father: 'father',
            childValue: ''
        }
    }

    changeRoute = () => {
        this.props.history.push('/twoPage');
    };

    getChildValue = (val) => {
        if(val){
            this.setState({
                childValue: val
            })
        }
    };

    render(){
        return (
            <div>
                <div>
                    <p>我是Home2组件</p>
                    <Link to="/onePage">点我跳转到one页面</Link><br/>
                    <Link to="/twoPage/2">点我跳转到two页面</Link><br/>
                    <Link to="/this">点我跳转到this页面</Link>
                    <p onClick={this.changeRoute}>点我试试</p>
                </div>
                <div>
                    <p>我是父组件</p>
                    <Child value={this.state.father} getChildValue={this.getChildValue} />
                    <p>{this.state.childValue}</p>
                </div>
            </div>
        )
    }
}

子组件Child.js:

import React from 'react';

export default class Child extends React.Component{
    constructor(props){
        super(props);
        this.state ={
            child: 'child'
        }
    }

    forFatherValue = () => {
        this.props.getChildValue(this.state.child)
    };

    render(){
        return (
            <div>
                <p>我是子组件</p>
                <p>{this.props.value}</p>
                <p onClick={this.forFatherValue}>点我给父组件传递参数</p>
            </div>
        )
    }
}

 

只需要在子组件标签上添加父组件的事件,这个事件要能接收参数,子组件传递过来的值就在这个参数里,还要注意子组件调用的是子组件的方法,
方法内部才是this.props.父组件绑定的key,这个key也是自己想取什么都可以,绑定什么key子组件方法内部就调用什么key,多试几遍就能记住。
posted @ 2019-04-11 16:59  要开心  阅读(615)  评论(0编辑  收藏  举报