React组件之间的传值

一笑奈何 提交于 2020-02-14 23:14:31

1.父子之间的传值

    父传子

          父: 通过自定义属性进行传值

import React, { Component } from 'react';
import Son from './son'

export default class father extends Component {
    render() {
        return (
            <div>
                <Son toson="给儿子的"></Son>
            </div>
        )
    }
}

          子:通过this.props.属性名进行接收

import React, { Component } from 'react'

export default class son extends Component {
    render() {
        return (
            <div>
                {this.props.toson}
            </div>
        )
    }
}

 

子传父

    父

import React, { Component } from 'react';
import Son from './son'

export default class father extends Component {
    getFromSon = (msg)=>{
        //参数来自于儿子的数据 getMeg == getFromSon
        console.log(msg)
    }
    render() {
        return (
            <div>
                <Son getMeg ={this.getFromSon}></Son>
            </div>
        )
    }
}

     儿:

import React, { Component } from 'react'


export default class son extends Component {
    toFather=()=>{
        this.props.getMeg('给父亲的数据')
    }
    render() {
        return (
            <div>
                <button onClick={this.toFather}>点击传递数据给父亲</button>
            </div>
        )
    }
}

2.兄弟之间传值

   根据父亲作为中间商,将数据定义在父亲身上

  父:

import React, { Component } from 'react';
import Sonone from './Sonone'
import Sontwo from './Sontwo'

export default class father extends Component {
    state={
        name:'xx'
    }
    changeName =( name )=>{
        this.setState({
            name
        })
    }
    render() {
        return (
            <div>
                <Sonone name ={this.state.name} changeName= {this.changeName}></Sonone>
                <Sontwo name ={this.state.name}></Sontwo>
            </div>
        )
    }
}

import React, { Component } from 'react'


export default class sonone extends Component {
    change= () =>{
        this.props.changeName('修改的数据')
    }
    render() {
        return (
            <div>
                <button onClick={this.change}>修改数据</button>
            </div>
        )
    }
}

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!