老师这样可以吗

来源:2-3 自由编程

unbreakable_全栈

2021-01-26 12:10:43

/**

 * Props,State,与render函数

 */

import React, { ComponentFragment } from "react";

// import Child from "./Child";

class Counter extends Component {

  constructor(props) {

    super(props);

    this.handleBtnClick = this.handleBtnClick.bind(this);

    this.state = {

      counter: 1,

    };

  }

  // 增加

  handleBtnClick() {

    const newCounter = this.state.counter + 1;

    console.log(this.pElem.innerHTML);

    //  setState 是异步的

    //  this.setState({

    //    counter: newCounter,

    //  });

    this.setState(

      () => {

        return {

          counter: newCounter,

        };

      },

      () => {

        console.log(this.pElem.innerHTML);

      }

    );

  }

  render() {

    //  console.log("render");

    //  当组件初次创建的时候,render函数会被执行一次

    //  当state数据发生变更的时候,render函数会被重新执行

    //  当props数据发生变更的时候,render函数会被重新执行


    //  ref写在html标签上,获取的是dom节点

    // ref写在组件标签上,获取的是组件的js实例

    return (

      <Fragment>

        {/*这是注释 JSX语法注释格式 */}

        <button onClick={this.handleBtnClick}>增加</button>

        <p

          ref={(p=> {

            this.pElem = p;

          }}

        >

          {this.state.counter}

        </p>

        {/* <Child

          ref={(child) => {

            this.childElem = child;

          }}

          number={this.state.counter}

        /> */}

      </Fragment>

    );

  }

}

export default Counter;



写回答

1回答

好帮手慕言

2021-01-26

同学你好,使用同学提供的代码测试,结构是对的。点击按钮时,数字增加了1。按照编程题按钮的提示文字,点击按钮应该增加2,修改如下:

http://img.mukewang.com/climg/600faea4095c3fc906920123.jpg

祝学习愉快~

0

0 学习 · 10739 问题

查看课程