入门教程: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

可以点击按钮,按钮格子里出现OX

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

前置知识

如果你想重新了解一下 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)的更多相关文章

  1. React 记录(1)

    作为一个前端工程师,前端框架是必须会的,所以开始学习React. 学习的方法是:先实践,后图文记录. React官网:https://reactjs.org React中文网站:https://www ...

  2. React 记录(7)

    React文档:https://www.reactjscn.com/docs/handling-events.html 慢慢学习:对照教程文档,逐句猜解,截图 React官网:https://reac ...

  3. React 记录(6)

    React文档:https://www.reactjscn.com/docs/react-component.html 慢慢学习:对照教程文档,逐句猜解,截图 React官网:https://reac ...

  4. React 记录(5)

    React文档:https://www.reactjscn.com/docs/state-and-lifecycle.html 慢慢学习:对照教程文档,逐句猜解,截图 React官网:https:// ...

  5. React 记录(4)

    React文档:https://www.reactjscn.com/docs/components-and-props.html 慢慢学习:对照教程文档,逐句猜解,截图 React官网:https:/ ...

  6. React 记录(3)

    React文档:https://www.reactjscn.com/docs/hello-world.html 慢慢学习:对照教程文档,逐句猜解,截图 React官网:https://reactjs. ...

  7. react 记录:运行npm run eject命令暴露配置文件都报这个错误

    问题: react 使用create-react-app命令创建一个项目,运行npm run eject命令暴露配置文件都报这个错误 原因:主要是脚手架添加 .gitgnore文件,但是却没有本地仓库 ...

  8. 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 ...

  9. Effect Hook

    1 数据获取,设置订阅以及手动更改 React 组件中的 DOM 都属于副作用. 2 可以把 useEffect Hook 看做 componentDidMount,componentDidUpdat ...

随机推荐

  1. Ionic的NavController 和ModalController 的区别

    网上也没有找到直接介绍两者区别的文章,以下都是个人感觉 区别 NavController 和 ModalController 都是打开新页面,但是NavController 是直接将页面放入到原有的页 ...

  2. LG P2473 [SCOI2008]奖励关

    题目链接:P2473 [SCOI2008]奖励关 题意:有n个宝物 每次等概率抛出其中之一一共抛出k次每个宝物有一个价值 和一个前提集合只有集齐了集合中的所有宝物 才可以领取这个宝物 范围:1 < ...

  3. CSS垂直翻转与水平翻转

    /*水平翻转*/ .flipx { -moz-transform:scaleX(-1); -webkit-transform:scaleX(-1); -o-transform:scaleX(-1); ...

  4. [NOI2010]海拔(最小割)

    题目描述 YT市是一个规划良好的城市,城市被东西向和南北向的主干道划分为n×n个区域.简单起见,可以将YT市看作一个 正方形,每一个区域也可看作一个正方形.从而,YT城市中包括(n+1)×(n+1)个 ...

  5. IO创建Socket通信中慎用BufferReader中的readLine()

    在编写Socket的Demo的时候,在Server中使用BufferReader获取从客服端发送过来的内容 package cn.lonecloud.socket; import cn.loneclo ...

  6. 蓝桥杯 错误票据 (stringstream的使用)

    题目链接:http://lx.lanqiao.cn/problem.page?gpid=T28 问题描述 某涉密单位下发了某种票据,并要在年终全部收回. 每张票据有唯一的ID号.全年所有票据的ID号是 ...

  7. Java 判断相等

    1.基本数据类型用 == long a = (long) 1234567890; long b = (long) 1234567890; if (a == b) { System.out.printl ...

  8. 任意模数NTT

    任意模数\(NTT\) 众所周知,为了满足单位根的性质,\(NTT\)需要质数模数,而且需要能写成\(a2^{k} + r\)且\(2^k \ge n\) 比较常用的有\(998244353,1004 ...

  9. B1018. 锤子剪刀布

    大家应该都会玩“锤子剪刀布”的游戏:两人同时给出手势,胜负规则如图所示: 现给出两人的交锋记录,请统计双方的胜.平.负次数,并且给出双方分别出什么手势的胜算最大. 输入格式: 输入第1行给出正整数N( ...

  10. 【洛谷P2704】炮兵阵地

    题目大意:定义一个炮兵会影响该点所在坐标上下左右两个格子的范围,求一个 N*M 的网格里最多可以放多少个炮兵. 题解:发现这个问题有需要记录两个状态,即:上一层的状态和上两层的状态,若直接进行记录,空 ...