入门教程: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. RFC2544测试指标

    RFC2544测试指标 参考:https://wenku.baidu.com/view/3abbb5bf960590c69ec3769d.html  RFC2544性能测试介绍 参考:https:// ...

  2. SA / SAM 题目集

    上一次做 SA / SAM 相关的题还要数到某场毒瘤 NOIP 模拟赛--这么久没做了都快忘光了--写点东西记录一些最近做到的水好题. LOJ2059 「TJOI / HEOI2016」字符串 题意 ...

  3. Android 错误提示: Can't create handler inside thread that has not called Looper.prepare()

    Can't create handler inside thread that has not called Looper.prepare() 将 Handler handler = new Hand ...

  4. 每天一个linux命令(02):route命令

    route命令用来显示并设置Linux内核中的网络路由表,route命令设置的路由主要是静态路由.要实现两个不同的子网之间的通信,需要一台连接两个网络的路由器,或者同时位于两个网络的网关来实现. 在L ...

  5. docker 使用指南

    Compose is a tool for defining and running multi-container Docker applications. With Compose, you us ...

  6. java ee Concurrency 并发编程

    https://www.javacodegeeks.com/2014/07/java-ee-concurrency-api-tutorial.html This is a sample chapter ...

  7. java 子类强转父类 父类强转子类

    Java 继承 继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为. Java 子类强转父类 父类引用指向子类对象: jav ...

  8. JavaScript原型详解

    1,前言 下面是2008年Github创建以来,各种编程语言的排名情况 排名其中JavaScript自2015年之后就盘踞第一名,成为github上被使用最多的语言,早期,JS的使用还主要集中于浏览器 ...

  9. script id

    Script中的id还是有用的,比如如果页面需要加载的JS文件过多,那样最好是写一个JS文件用来加载这些JS文件 require: function(libraryName){ document.wr ...

  10. 在windows中把一个文件夹打成war包

    转: 在windows中把一个文件夹打成war包 一般开发打war包时都是用MyEclipse或IntelliJ IDEA等直接导出war文件,这里介绍一种如何把一个文件夹打成war包的方式,如下   ...