react快速上手

简介: react快速上手

一个人能否有成就,只看他是否具备自尊心与自信心两个条件。——苏格拉底

今天想简单玩玩React,我们打开React官方文档:

https://react.docschina.org/

点击入门教程

通过简单的介绍后,我们开始代码编写

打开提供的在线初始代码(我们之后再搭建本地开发环境来完成这个游戏,今天暂时只做一个简单入门):

https://codepen.io/gaearon/pen/oWWQNa?editors=0010

打开codepen提供的在线编辑器,看到初始代码后,我们可以开始尝试编写

注意看文档,这里三个React组件Square正方形、Board画板以及Game游戏

看到代码中的结构为主入口:

// ========================================
ReactDOM.render(
  <Game />,
  document.getElementById('root')
);

其中通过root这个id绑定了一个节点,包含了一个Game组件

class Game extends React.Component {
  render() {
    return (
      <div className="game">
        <div className="game-board">
          <Board />
        </div>
        <div className="game-info">
          <div>{/* status */}</div>
          <ol>{/* TODO */}</ol>
        </div>
      </div>
    );
  }
}

这个Game组件又包含了Board画板组件

class Board extends React.Component {
  renderSquare(i) {
    return <Square />;
  }
  render() {
    const status = 'Next player: X';
    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>
    );
  }
}

画板Board组件中的外部div包含了四个div分别是显示井字棋玩家状态(下次落子为X还是O),这里用{status}获取到了上面申明的变量status

然后是三个classNameboard-rowdiv,其中每一个div又包含了三个Square组件:

class Square extends React.Component {
  render() {
    return (
      <button className="square">
        {/* TODO */}
      </button>
    );
  }
}

Square正方形组件包含了一个button标签,最后形成的效果就是一个状态,九个按钮:

然后我们可以开始修改代码了

首先是在Board中给Square组件传入一个value

class Board extends React.Component {
  renderSquare(i) {
    return <Square value={i} />;
  }    
...
}

然后再到Square中渲染出来这个value

class Square extends React.Component {
  render() {
    return (
      <button className="square">
        {this.props.value}
      </button>
    );
  }
}

修改完我们的代码,很快就渲染生效了,可以看到数字渲染了出来

我们在给每个Square中的button添加一个点击事件:

class Square extends React.Component {
  render() {
    return (
      <button className="square" onClick={function() { alert('click'); }}>
        {this.props.value}
      </button>
    );
  }
}

添加完成后我们再次点击,可以看到弹出了弹框

我们接下来给Square新增一个状态state,让它可以实现我们的点击前为空,点击后渲染

class Square extends React.Component {
  constructor(props) {
    super(props);
    this.state = {
      value: null,
    };
  }
  render() {
    return (
      <button
        className="square"
        onClick={() => this.setState({value: 'X'})}
      >
        {this.state.value}
      </button>
    );
  }
}

现在我们每点击一次,就可以留下一个X作为标记啦

之后我们在完成剩下的部分吧~

相关文章
|
7月前
|
JavaScript 前端开发 API
vue3快速上手
vue3快速上手
129 0
|
7月前
|
前端开发 JavaScript 数据安全/隐私保护
详解React antd中setFieldsValu的简便使用
详解React antd中setFieldsValu的简便使用
288 0
|
缓存 前端开发 API
React + MobX 快速上手2
React + MobX 快速上手
|
2月前
|
前端开发 JavaScript API
React开发需要了解的10个库
本文首发于微信公众号“前端徐徐”,介绍了React及其常用库。React是由Meta开发的JavaScript库,用于构建动态用户界面,广泛应用于Facebook、Instagram等知名网站。文章详细讲解了Axios、Formik、React Helmet、React-Redux、React Router DOM、Dotenv、ESLint、Storybook、Framer Motion和React Bootstrap等库的使用方法和应用场景,帮助开发者提升开发效率和代码质量。
140 4
React开发需要了解的10个库
|
2月前
|
前端开发 JavaScript CDN
React 教程
10月更文挑战第6天
50 3
|
前端开发 JavaScript 编译器
对比 React,用10个例子快速上手 Svelte
文章用十个例子比较了 React 和 Svelte 两个框架,包括属性传递、状态管理、条件渲染、异步渲染等。通过阅读这篇文章,你可以了解 Svelte 的基本用法和渲染原理。
274 0
对比 React,用10个例子快速上手 Svelte
|
前端开发 JavaScript 算法
【React学习】—React简介(一)
【React学习】—React简介(一)
|
存储 前端开发
React + MobX 快速上手1
React + MobX 快速上手
|
资源调度 JavaScript 前端开发
React系列教程(4)React Redux快速入门(下)
React系列教程(4)React Redux快速入门(下)
83 0
|
存储 JavaScript 前端开发
React系列教程(4)React Redux快速入门(上)
React系列教程(4)React Redux快速入门
139 0