react组件传参:父子,子父,爷孙,兄弟

父-子
父组件
   Class FartherC extends React.Component{
        constructor(){
            super();
            this.state={
            name:'我是父组件的值',
            age:'20'
            }
        };
        render(){
            return(
                <div>
                     //将父组件中的name通过childrenname传递给子组件
                    <ChildrenC name={this.state.name}/>
                    //将父组件中的this.state中的所有值通过name传递给子组件
                    //'...'为扩展运算符,意思是将this.state中的值当做参数传递等同于
                     //<ChildrenC name={this.state.name} age ={this.state.age}/>
                    <ChildrenC {...this.state}/>
                </div>
            )
        }
   }
子组件
 Class ChildrenC extends React.Component{
        constructor(props){
            super(props);
            this.state={
            name:'我是子组件的值'
            }
        };
        render(){
            return(
                <div>
                    //父组件中的两种写法都可以在子组件中以如下方式获取父组件中的值
                    <h1>{this.props.name}</h1>
                </div>
            )
        }
   }
子-父
父组件
   Class FartherC extends React.Component{
        constructor(){
            super();
            this.state={
            name:'我是父组件的值',
            age:'20'
            }
        };
        handelParent(obj){//此处的obj表示着我要从子组件给父组件传递的参数为对象,根据需要决定
            this.setState({//将传递来的name赋值给this.state中的name
                name:obj.name
            })
        }
        render(){
            return(
                <div>
                    <ChildrenC {...this.state} 
                                //不用bind(this)那么this.的这个this不是FartherC 则报错
                               handelParent={this.handelParent.bind(this)}/>
                </div>
            )
        }
   }
子组件
 Class ChildrenC extends React.Component{
        constructor(props){
            super(props);
            this.state={
            name:'我是子组件的值'
            }
        };
        handelChange(event){
            //{name:'我是子组件传过来的',age:'40'}就是传递给父组件的值
            this.props.handelParent({name:event.target.value});
        };
        render(){
            return(
                <div>
                    //父组件中state中name的值会随着下面输入框中的值变化而变化
                    <input type='text' value={this.props.name} onChange={(event)=>{
                           this.handelChange(event)
                            }}/>
                </div>
            )
        }
   }
爷-孙
爷组件
   Class FartherC extends React.Component{
        constructor(){
            super();
            this.state={
            fname:'我是爷爷',
            fage:'20'
            }
        };
        render(){
            return(
                <div>
                   <ChildrenC {...this.state}/>
                </div>
            )
        }
   }
父组件
 Class ChildrenC extends React.Component{
        constructor(props){
            super(props);
            this.state={
            cname:'我是爸爸'
            }
        };
        render(){
            return(
                <div>
                    <SunC sunname={this.props.fname}/>
                </div>
            )
        }
   }
孙组件
 Class SunC extends React.Component{
        constructor(props){
            super(props);
            this.state={
            sname:'我是孙子'
            }
        };
        render(){
            return(
                <div>
                    <h1>{this.props.sunname}</h1>
                </div>
            )
        }
   }
兄弟//A组件中input输入的值在B组件中显示
 Class FartherC extends React.Component{
        constructor(){
            super();
            this.state={
            fname:'我是爷爷',
            fage:'20'
            }
        };
        ChangeA(obj){//此处的obj表示着我要从子组件给父组件传递的参数为对象,根据需要决定
            this.setState({//将传递来的name赋值给this.state中的name
                name:obj.name
            })
        }
        render(){
            return(
                <div>
                   <ChildrenA  ChangeA={this.ChangeA.bind(this)}/>
                   <ChildrenB {...this.state}/>
                </div>
            )
        }
   }
A组件
Class ChildrenA extends React.Component{
        constructor(){
            super();
            this.state={
            name:'我是A',
            age:'21'
            }
        };
        handelChange(event){
            this.props.ChangeA({name:event.target.value});
        };
        render(){
            return(
                <div>
                     <input type='text' value={this.props.name} onChange={(event)=>{
                           this.handelChange(event)}}/>
                </div>
            )
        }
   }
B组件
Class ChildrenB extends React.Component{
        constructor(){
            super();
            this.state={
            name:'我是B',
            age:'20'
            }
        };
        render(){
            return(
                <div>
                   <h1>{this.props.fname}</h1>
                </div>
            )
        }
   }
 
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值