React 记录(2)
入门教程:https://www.reactjscn.com/tutorial/tutorial.html
慢慢学习:对照教程文档,逐句猜解,截图
React官网:https://reactjs.org
React中文网站:https://www.reactjscn.com
Github地址:https://github.com/facebook/react
React 技术栈系列教程:http://www.ruanyifeng.com/blog/2016/09/react-technology-stack.html
课前准备
教程简介

效果预览:https://codepen.io/gaearon/pen/gWWZgR?editors=0010

可以点击按钮,按钮格子里出现O和X

点击右侧还能返回到某一步骤

前置知识

如果你想重新了解一下 JavaScript 的新特性,我们推荐你阅读 这篇教程:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/A_re-introduction_to_JavaScript
已经读过,懂不懂的不重要,关于类和函数的解释到是很到位


arrow functions:箭头函数:
MDN的JavaScript教程:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Functions/Arrow_functions

ES6教程:http://es6.ruanyifeng.com/#docs/function#箭头函数

classes:类
MDN的JavaScript教程:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Classes

let

const

Babel REPL:https://babeljs.io/repl
“读取-求值-输出”循环(英语:Read-Eval-Print Loop,简称REPL)是一个简单的,交互式的编程环境
Babel 入门教程:http://www.ruanyifeng.com/blog/2016/01/babel.html


如何编写代码
本地搭建React的开发运行环境:现在应该不用,所以略过
总览
React 是什么?
React 是一个采用声明式,高效而且灵活的用来构建用户界面的框架。
React 当中包含了一些不同的组件,我们从使用 React.Component 开始:

逐句猜解
这个
class应该是模仿Java来的,extends不就是Java的类继承关键字么
用了ClassName,一般HTML是写class的
{}是来写表达式传值的:this指的是这个class类吧
render():渲染函数,,怎么用呢,没说


逐句猜解
一个组件会接受名为
props的参数,并通过名为render的方法返回一个嵌套结构的视图。
props:向组件传进去参数用这个
嵌套:说的是一直在调用React.createElement()方法吧


逐句猜解
每一个 React 元素事实上都一个 JavaScript 对象,你可以在你的应用中把它当保存在变量中或者作为参数传递。:这个感觉还容易理解,元素,对象,作为参数
开始编码


模板代码:https://codepen.io/gaearon/pen/oWWQNa?editors=0010
class Square extends React.Component {
render() {
return (
<button className="square">
{/* TODO */}
</button>
);
}
}
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>
);
}
}
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>
);
}
}
// ========================================
ReactDOM.render(
<Game />,
document.getElementById('root')
);
代码阅读
觉得要从下往上读:最后是在
<root>标签下生成<Game />组件,<Game />组件的内容是一堆<div>标签,中括号里传递参数
通过 Props 传递数据

代码阅读
觉得是从父组件传递一个值到子组件:
.props意思是所有参数,this.props.value是指组件所有参数中名叫value的参数的值
给组件添加交互功能



查看此步完整代码示例:https://codepen.io/gaearon/pen/VbbVLg?editors=0010
开发工具

浏览器蓝色版(开发版):https://www.mozilla.org/zh-CN/firefox/developer/

源代码界面:https://github.com/facebook/react-devtools

状态提升






查看此步完整代码示例:https://codepen.io/gaearon/pen/ybbQJX?editors=0010

不可变性


函数定义组件

轮流落子


判断赢家

保存历史记录

2019.01.30,看的头晕,下次再看
React 记录(2)的更多相关文章
- React 记录(1)
作为一个前端工程师,前端框架是必须会的,所以开始学习React. 学习的方法是:先实践,后图文记录. React官网:https://reactjs.org React中文网站:https://www ...
- React 记录(7)
React文档:https://www.reactjscn.com/docs/handling-events.html 慢慢学习:对照教程文档,逐句猜解,截图 React官网:https://reac ...
- React 记录(6)
React文档:https://www.reactjscn.com/docs/react-component.html 慢慢学习:对照教程文档,逐句猜解,截图 React官网:https://reac ...
- React 记录(5)
React文档:https://www.reactjscn.com/docs/state-and-lifecycle.html 慢慢学习:对照教程文档,逐句猜解,截图 React官网:https:// ...
- React 记录(4)
React文档:https://www.reactjscn.com/docs/components-and-props.html 慢慢学习:对照教程文档,逐句猜解,截图 React官网:https:/ ...
- React 记录(3)
React文档:https://www.reactjscn.com/docs/hello-world.html 慢慢学习:对照教程文档,逐句猜解,截图 React官网:https://reactjs. ...
- react 记录:运行npm run eject命令暴露配置文件都报这个错误
问题: react 使用create-react-app命令创建一个项目,运行npm run eject命令暴露配置文件都报这个错误 原因:主要是脚手架添加 .gitgnore文件,但是却没有本地仓库 ...
- react 记录:React Warning: Hash history cannot PUSH the same path; a new entry will not be added to the history stack
前言: react-router-dom 4.4.2 在页面中直接使用 import { Link } from 'react-router-dom' //使用 <Link to={{ path ...
- Effect Hook
1 数据获取,设置订阅以及手动更改 React 组件中的 DOM 都属于副作用. 2 可以把 useEffect Hook 看做 componentDidMount,componentDidUpdat ...
随机推荐
- selenium+python启动Firefox浏览器失败问题和点击登陆按钮无效问题
问题1:使用python+selenium编写脚本调用Firefox时报错:
- Random Maze HDU - 4067(预定义状态建边(贪心建边))
Random Maze Time Limit: 10000/3000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Tota ...
- Quartus prime 16.0 signaltap II 使用
前言 由于逻辑分析仪太贵,altera贴心提供signal tap II来观察输出波形,不过使能signaltap II会占用片内ram,毕竟原理就是把数据采样到ram中再通过jtag口上传到quar ...
- 【hdu6185】Covering(骨牌覆盖)
2017ACM/ICPC广西邀请赛-重现赛1004Covering 题意 n*4的格子,用1*2和2*1的砖块覆盖.问方案数(mod 1e9+7).(n不超过1e9) 题解 递推了个式子然后错位相减. ...
- 「POJ3696」The Luckiest number【数论,欧拉函数】
# 题解 一道数论欧拉函数和欧拉定理的入门好题. 虽然我提交的时候POJ炸掉了,但是在hdu里面A掉了,应该是一样的吧. 首先我们需要求的这个数一定可以表示成\(\frac{(10^x-1)}{9}\ ...
- luogu1330 封锁阳光大学 (dfs)
给每一个联通块黑白染色(一条边两端点不同色),看是否能染 然后选那个出现次数比较少的颜色 #include<bits/stdc++.h> #define pa pair<int,in ...
- luogu1919 A*BProblem升级版 (FFT)
把一个n位数看做n-1次的多项式,每一项的系数是反过来的每一位最后每一项系数进进位搞一搞就行了(数组一定要开到2的次数..要不然极端数据会RE) #include<cstdio> #inc ...
- NOIP 飞扬的小鸟 题解
题目描述 Flappy Bird是一款风靡一时的休闲手机游戏.玩家需要不断控制点击手机屏幕的频率来调节小鸟的飞行高度,让小鸟顺利通过画面右方的管道缝隙.如果小鸟一不小心撞到了水管或者掉在地上的话,便宣 ...
- Windows系统服务管理
1.用SC命令管理: 启动redis服务: C:\Users\Administrator>sc start redis 停止redis服务: C:\Users\Administrator> ...
- 洛谷P1463 反素数
经典题了,很难想到这TM是搜索...... 题意:求[1, n]中约数最多的数中最小的. 解:我们有约数个数定理. 所以考虑通过枚举每个质因数个数来直接计算出约数个数. 然后就可以搜索了. 注意:若p ...