React 学习

1. react 学习前的前置条件

在学习 react 之前首先需要熟悉 class 用作用和用法。

2. 学习 class

Class 的作用就是创建构造函数,在 ES5 中我们使用大写字母开头的函数作为构造函数,使用 new 关键字创建它的实例。在拥有class 关键字之后,我们就可以直接使用 class 来定义所有的构造函数及其方法,并使用 new 关键字创造实例。
ES5中一致,类的 constructor 方法直指类本身。
class 内部的方法就等同于 ES5 中使用 prototype 创建构造函数的原型函数。
我们可以使用 Object.assign 一次性为类创建多个方法。
ES5 中不一致的是,class 类必须使用 new 调用。

3. 通过 webpack 搭建开发 react 的开发环境

主要分为一下几个步骤,首先在项目中使用yarn安装reactreact-dom ,接下来在项目中使用yarn安装babel@babel-preset-react@babel/preset-env。接着分别在webpack.config.js.babellrc中进行配置。

4. react 的核心

react是以数据为驱动的单向数据流,同时也是组件化编程。react通过jsx实现组件化编程,接着通过虚拟 DOM进行展示。

5. 通过 manifest实现离线网页

6. JSX

JSXreact所支持的语法,用于在JS中嵌入HTML代码。
JSX中写代码,所有标签必须闭合、最外层只能有一个元素包裹,并且在使用表达式时必须使用{}

7. 组件

组件的书写可以分为两种,一种是函数组件,还有一种是使用class声明的组件。
使用组件的时候,第一种方法是我们通过使用props对其进行传参,组件内部不能修改;第二种方法是使用 state,这种方式的数据是私有的,完全受控于组件。需要注意的是,函数式组件只能使用props方式,而class组件两种方式都可以使用。

8. 事件处理

当为组件绑定事件处理函数的时候,所创建的函数必须使用驼峰命名法,并且修改函数的 this 指向问题。
修改 this 指向有三种方法,第一种方法是使用 bind 进行修改;第二种方法是在调用时使用 this.xxx();第三种方法是在调用时使用箭头函数。

9. 组件生命周期

必须要明确一点,组件生命周期函数只存在于 class 声明的组件中。
生命周期函数gitInitialState,用于在 state 初始化。
getDefaultProps 用于props默认值。
componentWillMount组件即将挂载,它在生命周期时只会被调用一次,可用于做一些组件内部初始化工作。
componentDidMount组件挂载完毕,在render之后调用,在这个阶段 DOM 已经可以使用。
shouldComponentUpdate决定组件是否需要重新渲染。
componentWillUpdate组件即将更新。
componentDidUpdate组件更新完毕。
componentWillUnmount组件即将被销毁,可用于清除计时器等收尾操作。

10. react 路由

使用react-router进行路由处理。首先安装react-router-dom,在代码中引入 react-router-dom
嵌套路由
动态路由
带权限的路由

11. react类型检测

12. redux状态管理器

状态管理redux
在使用redux时,我们所遵循的原则是单向数据流原则;state是只读属性,我们只能使用纯函数对其进行修改。

12.1 安装redux

使用npm i redux -Syarn add redux进行安装。

12.2 redux四大概念

四大概念分别是storestateactionreducer

12.2.1 store

一个应用中只能有一个storestore是一个对象,用于存放整个应用的state

import { createStore } from 'redux'
const store = createStore(reducer)

12.2.2 state

state是整个应用当前的数据,可以通过store.getState进行获取。

12.2.3 action

action是描述事件发生的对象。必须设置type属性表示要去执行的动作。

const action = {
  type: 'ADD_TODO',  //  事件类型
  payload: 'learn redux'   // 该 action 所携带的数据
}

定义好事件类型之后,使用store.dispatch()触发事件。

12.2.4 reducer

reducer是描述该怎么更新state的函数。reducer接受两个参数,第一个参数是初始化的state,第二个参数是action

function reducer(state="javascript", action) {
  switch(action.type) {
    case: 'HTML': 
      return 'this is html'
      break
    case: 'javascript':
      return 'this is javascript'
      break
    default: 
      return state
  }
}

12. react-redux

使用yarn add react-redux进行安装。
react-redux可以使组件通过 this.props的方式获取store中的state
react-redux中组件分为两类,分别是UI组件和容器组件。
在这两种组件中,有两个组件非常重要,分别是Provider组件和connect组件,Provider组件作为react的顶层组件,接受store作为props,所有自组件通过props获取数据。connect组件使UI组件升级为容器组件。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,843评论 6 502
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,538评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,187评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,264评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,289评论 6 390
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,231评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,116评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,945评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,367评论 1 313
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,581评论 2 333
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,754评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,458评论 5 344
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,068评论 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,692评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,842评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,797评论 2 369
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,654评论 2 354

推荐阅读更多精彩内容

  • 这是16年5月份编辑的一份比较杂乱适合自己观看的学习记录文档,今天18年5月份再次想写文章,发现简书还为我保存起的...
    Jenaral阅读 2,752评论 2 9
  • export/import导出/导入模块 模块功能主要由两个命令构成:export和import。export命令...
    WittyLu阅读 700评论 0 1
  • 事件系统 合成事件的绑定方式 Test 合成事件的实现机制:事件委派和自动绑定。 React合成事件系统的委托机制...
    cheneyg916阅读 386评论 0 1
  • 3. JSX JSX是对JavaScript语言的一个扩展语法, 用于生产React“元素”,建议在描述UI的时候...
    pixels阅读 2,824评论 0 24
  • react脚手架大集合 react4.0 官网redux入门教程react-native中文官网react官方文档...
    pauljun阅读 491评论 0 7