【React】react学习笔记06-React多组件父子传值

前文讲到,React是面向组件来开发的,那么组件之间是怎样配合的呢?

 父组件传参子组件:

下面我定义了两个组件,上层组件为Component,子组件为SubComponent。父组件调用子组件的时候,通过props属性传递了两个参数,分别为:times以及clickEvent

<div>
  <p>=========将父组件中的state值与函数传递给子组件========</p>
  <SubComponent times={times} clickEvent={this.clickBtn.bind(this)}/>
  <p>=================================================</p>
</div>

子组件中接收父组件传递的参数并使用:

//从props中取值
const times = this.props.times;

父组件函数的调用:

 //实际上调用的是传参进来的函数
this.props.clickEvent();

DEMO:

仍旧是复制代码看效果:

<!DOCTYPE html><html>
<head>
    <meta charset="utf-8" />
    <title>React Tutorial</title>

</head>
<body>
    <!--react基础库-->
      <!--react基础库-->
      <script src="https://cdn.bootcss.com/react/16.8.6/umd/react.development.js"></script>
    <script src="https://cdn.bootcss.com/react-dom/16.8.6/umd/react-dom.development.js"></script>
    <script src="https://cdn.bootcss.com/babel-standalone/6.26.0/babel.js"></script>

    <div id="content"></div>

    <script type="text/babel">
        //定义父组件
        class Component extends React.Component{
            //构造函数,在初始化组件的时候会执行
              constructor(props){
                  super(props);
                  this.state={
                      times: 1
                  }
              }
            //render会进行页面的渲染,当state中数据更新或者发送ajax等事件被监听到都会触发render的刷新
              render(){
                  //从state中取值
                  const times = this.state.times;
                  // 绑定onClick事件函数
                  return(
                      <div>
                          <p>=========将父组件中的state值与函数传递给子组件========</p>
                          <SubComponent times={times} clickEvent={this.clickBtn.bind(this)}/>
                          <p>=================================================</p>
                      </div>
                  );
              };
              clickBtn(){
                    //console.log("click")
                    let times=this.state.times;
                    times+=1;
                    this.setState({times});
             }
        }
        //定义子组件
        class SubComponent extends React.Component{
            //构造函数,仅在初始化组件的时候会执行一次
            constructor(props){
                super(props);
                this.state={times: this.props.times}
            }

            render(){
                //从props中取值
                const times = this.props.times;
                // 绑定onClick事件函数
                return(
                    <div>
                        <p>次数:{times}</p>
                        <button onClick={this.clickSubBtn.bind(this)} >Click</button>
                    </div>
                );
            }
            clickSubBtn(){
                //实际上调用的是传参进来的函数
                this.props.clickEvent();
            }
        }
        ReactDOM.render(<Component />,document.getElementById("content"));


    </script>


</body>
</html>

DEMO的结果是:统计点击次数。

注意事项:

1、React只支持从上往下的参数传递。

2、不要建立太过复杂的上下结构,一般建议2-3层。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值