react中组件之间的传值

1.父组件向子组件传值

  • 父组件要提供想要传递给子组件的数据
  • 给子组件添加属性。属性值为父组件中state中要传递的数据
  • 子组件通过props接收父组件传递过来的数据
 关于父子组件之间的传递
// 父组件
// class Parent extends React.Component{
//     // 1.父组件中定义要传递的值
//     state={
//         name:'ww'
//     }
//     render(){
//         return (
//             <div>
//                 <p>这是父组件</p>
//                 {/* 2.将定义的值放在子组件中进行传递 */}
//                 <Child name={this.state.name} />
//             </div>
//         )
//     }
// }
// // 子组件
// // 3.在子组件中使用props接收父组件传递过来的值
// const Child=(props)=>{
// console.log(props);

//         return (
//         <div>这是子组件{props.name}</div>
//         )
//     }
// ReactDOM.render(<Parent />,document.getElementById("root"))

 2.子组件向父组件传值

  • 利用回调函数,父组件提供回调函数,子组件进行调用,将子组件要传递的数据作为回调函数的参数进行传递
  • 父组件提供回调函数
  • 将回调函数作为属性值传递给子组件
  • 子组件通过props接收传递的回调函数,并在子组件中进行调用传递过来的回调函数
/ 子组件向父组件传递数据
class Parent extends React.Component{
    state={
        msg:''
    }
//  1.在父组件中定义一个方法,作为属性传递给子组件,提供一个参数去接收传递过来的数据
getChildMsg=(data)=>{
console.log(data);
this.setState({
    msg:data
})

}
    render(){
        return (
            <div>
    <p>这是父组件{this.state.msg}</p>
                {/* 2.将定义的值放在子组件中进行传递 */}
                <Child  msg={this.getChildMsg}/>
            </div>
        )
    }
}
// 子组件

class Child extends React.Component{
   getMsg=()=>{
       // 3.在子组件中调用父组件传递过来的方法,并将传递的数据作为参数进行传递
        this.props.msg(123)
    }
    render(){
        return (
            <button onClick={this.getMsg}>这是子组件</button>
        )
    }
}

ReactDOM.render(<Parent />,document.getElementById("root"))

 3.兄弟组件之间传值

将共享状态(数据)提升到最近的公共父组件中,由公共父组件管理这个状态,这个状态称为状态提升

公共父组件的职责:1.提供共享状态,2.提供操作共享状态的方法

需要进行通讯的子组件只需要通过props接收状态和操作状态的我方法

class Parent extends React.Component{
提供想要改变的数据
state={
count:0
}
利用子组件2控制数值的增加,因此提供一个方法到子组件2中
addCount=()=>{
    this.setState({
        count:this.state.count++
})
}
    render(){
        return (
将数据作为属性值传递到子组件1中
            <Child01 count={this.state.count}/>
将控制数值的方法作为属性值传递到子组件2中
            <Child02 add={this.addCount}/>
)
}
子组件1
class Child01 extends React.Component{
    render(){
        return(
在子组件1中将传递的数值进行显示
                <p>计数器:{this.props.count}</p>
}
}
子组件2
class Child02 extends React.Component{
getAdd=()=>{
子组件2中调用父组件传递过来的方法
    this.props.add()
}
    render(){
        return(
子组件2中调用方法
               <button onClick={this.getAdd}> dianji </button>
}
}

这样父组件就通过子组件1管理数值的显示,子组件2管理数值的增加,就可以将子组件1和子组件2之间建立通信,实现兄弟组件之间数值的传递

大家一起加油学习React,程序员的世界真的很有意思,希望大家一起努力,不抛弃,不放弃。是我们的口号

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值