安装及使用
全局安装react
首先要安装node.jsnpm install -g create-react-app
切换到项目目录1
2
3create-react-app my-first-react-app
cd my-first-react-app
npm start
到此,一个本地的react项目诞生了
基础使用教程
教程实现了一个井字格游戏,跟着教程练习可以了解关于react的基本知识
基础教程功能完善
1.以 “(1, 3)” 坐标的方式记录每一步,而不是格子序号 “6”。
这个功能简单来说就是参考history历史记录的实现方式即可。
1)首先history在Game组件的构造函数状态中定义了一个history
的空数组,我们在这里定义一个axisHistory
的空数组,二维数组用来存储坐标
2)点击事件
我们用calAxis
函数得到当前点击的坐标1
2
3
4
5
6
7
8
9function calAxis(i) {
if (i<3) {
return [0, i]
} else if (i<6) {
return [1, i]
} else {
return [2, i]
}
}
3)最后一步,显示在页面上,render函数修改如下
效果如下:
参考React井字棋游戏完整功能示例
官方实现方法比我的就要简单得多了,能从简就从简吧
- 点击事件
- 页面渲染
效果如下:
2.在棋步记录列表里加粗显示当前选中的项目。
这一步用vue的思想,我觉得应该是这样,在列表记录的li标签上写一个可以加粗的类,选中列表的记录用一个状态保存当前选中的列表的index,然后再列表上判断,如果列表的index等于当前选中列表的index,这个类就激活
官方上的功能代码如下,几步就搞定了
效果如下:
3.在 Board 组件中用两个循环渲染出 9 个 Square 格子组件
1 | <div> |
两层循环的话,第一层应该是<div className="board-row"></div>
,第二层渲染square组件{this.renderSquare(i)}
4.添加一个切换按钮来升序或降序显示棋步记录列表。
这个功能主要是给history的内容排序吧!
- 加一个排序按钮,点击事件为
toggleSort
- 定义一个判断排序的状态
sort
- 排序事件
- 判断
sort
状态,对历史记录进行排序
bug就是加粗的状态不会变,之前是哪一行就是哪一行
5.当一方获胜时,高亮显示连成一线的3颗棋子
- 修改
calculateWinner
函数,返回值加上成功的记录 - 定义一个常量
winnerLine
保存这个记录 - 将这个记录传递给
Board
组件 - 再传递给
Square
组件 - 判断上级是否有
highlight
属性
效果如下: