React 之 内置方法setState改变state(一)

简述

  1. this.setState 方法是React组件类(React.Component 的子类)的一个内置方法。当你在创建一个React组件类时,你继承自 React.Component,因此你的组件类会自动获得this.setState 方法。
  2. this.setState 用于更新组件的state。当state更新时,React会重新渲染该组件及其子组件。

使用this.setState代码栗子:

//以下为组件 Board 的代码(一个React 组件类对象)
class Board extends React.Component {
  //构造函数来初始化 state(状态)
  //在 JavaScript classes(类)中, 在定义子类的构造函数时,你需要始终调用 super 。	          			   
  //所有具有 constructor 的 React 组件类都应该以 super(props) 调用启动它。
  constructor(props) {
    super(props);
    this.state = {  //等同于vue的data属性
      squares: Array(9).fill(null),
    };
  }

  handleClick(i) {  //等同于vue2的method属性内定义的方法
    const squares = this.state.squares.slice();
    squares[i] = 'X';
    //调用内置方法this.setState更新数据状态
    this.setState({squares: squares});
  }

  renderSquare(i) {
    return (
      //这里的Square 是另外一个组件,这里没写
      <Square   
        value={this.state.squares[i]}
        onClick={() => this.handleClick(i)}
      />
    );
  }

  render() {
    const status = 'Next player: X';
    // 以下等同于vue的模版template,  XML 的标签。你的组件告诉 React 你要呈现的内容
    return (   
      <div>
        <div className="status">{status}</div>
        <div className="board-row">
          {this.renderSquare(0)}
          {this.renderSquare(1)}
          {this.renderSquare(2)}
        </div>
        <div className="board-row">
          {this.renderSquare(3)}
          {this.renderSquare(4)}
          {this.renderSquare(5)}
        </div>
        <div className="board-row">
          {this.renderSquare(6)}
          {this.renderSquare(7)}
          {this.renderSquare(8)}
        </div>
      </div>
    );
  }
}

相关推荐

  1. React 之 内方法setState改变state

    2024-04-29 22:00:02       34 阅读
  2. React——class组件中setState修改state

    2024-04-29 22:00:02       44 阅读
  3. 理解React中的setState()方法

    2024-04-29 22:00:02       56 阅读
  4. React setState()的两种书写方法对比

    2024-04-29 22:00:02       51 阅读
  5. ReactsetState的执行机制

    2024-04-29 22:00:02       38 阅读
  6. ReactReact 中的setState执行机制

    2024-04-29 22:00:02       44 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-29 22:00:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-29 22:00:02       101 阅读
  3. 在Django里面运行非项目文件

    2024-04-29 22:00:02       82 阅读
  4. Python语言-面向对象

    2024-04-29 22:00:02       91 阅读

热门阅读

  1. ros收发话题通信测试

    2024-04-29 22:00:02       32 阅读
  2. 2024-04-29 区块链-项目-记录

    2024-04-29 22:00:02       34 阅读
  3. flume配置

    2024-04-29 22:00:02       34 阅读
  4. python绘制三维散点图

    2024-04-29 22:00:02       35 阅读
  5. 嵌入式学习——C语言基础——day12

    2024-04-29 22:00:02       37 阅读
  6. Python学习路线图及开源库和工具推荐

    2024-04-29 22:00:02       25 阅读
  7. Seata分布式事务!!!

    2024-04-29 22:00:02       33 阅读
  8. 统计字符次数

    2024-04-29 22:00:02       36 阅读