第五章 JSX语法

  • class属性改为className for属性改为htmlFor
  • jsx中javascript表达式必须要有返回值,使用三元操作符
  • 所有的标签必须闭合 input img等
  • react声明组件时,组件名称第一个字母必须大写
  • 解析html代码 dangerouslySetInnerHTML={{ __html:htmlString }}
  • jsx中内联样式通过style属性来定义,驼峰命名法

第六章 React的数据载体:state props与context

state称为内部状态或局部状态,

props与context则用于在组件间传递数据,props仅支持逐层传递,而context则能够跨级传递,只要在一个组件中定义了context,这个组件里面的子组件不管跨多少级都可以访问到context中的数据,react-redux的provider组件就使用了context来传递store

第七章 reactElement与组件实例

组件是一个函数或类,它决定了如何把数据变为视图

ReactElement只是一个普通的对象,它描述了组件实例或DOM节点

组件实例是组件类的实例化对象

生命周期

  1. constructor()

    执行时间:组件被加载前最先调用,并且仅调用一次

    作用:定义状态机变量

    注意:第一个语句必须是super(props)

  2. componentWillMount()

    执行时间:组件初始渲染(render()被调用前)前调用,并且仅调用一次

    作用:如果在这个函数中调用setState改变某些状态机,react会等待setState完成后再渲染 组件

    注意:子组件也有componentWillMount函数,在父组件的该函数调用后再被调用

  3. render()

    执行时间:componentWillMount之后,componentDidMount之前,

    作用:渲染挂载组件

    触发条件:(1)初始化加载页面(2)状态机改变setState ( 3 ) 接收到新的props(父组件更新)

    注意:组件所必不可少的核心函数;不能在该函数中修改状态机state

  4. componentDidMount()

    执行时间:render之后被调用,并且仅调用一次

    作用:渲染挂载组件;可以使用refs(备注:React支持一个特殊的属性,你可以将这个属性加在任何通过render()返回的组件中。这也就是说对render()返回的组件进行一个标记,可以方便的定位的这个组件实例。)

    注意:子组件也有该函数,在父组件的该函数调用前被调用;如果在该函数中修改某些状态机state,会重新渲染render组件,所以有些组件为减少渲染次数,可以将某些修改状态机的操作放在componentWillMount函数中;

    如果需要在程序启动显示初始化页面后从网路获取数据,可以将网络请求代码放在该函数中

  5. componentWillReceiveProps(nextProps)

    执行时间:组件渲染后,当组件接收到新的props时被调用;这个函数接收一个object参数(新的props);props是父组件传递给子组件的。父组件发生render的时候子组件就会调用

    作用:渲染挂载组件;可以使用refs(备注:React支持一个特殊的属性,你可以将这个属性加在任何通过render()返回的组件中。这也就是说对render()返回的组件进行一个标记,可以方便的定位的这个组件实例。)

    注意:react初次渲染时,该函数并不会被触发,因此有时该函数需要和componentWillMount或componentDidMount组合使用;使用该函数一定要加nextProps参数

  6. shouldComponentUpdate(nextProps, nextState)

    执行时间:组件挂载后(即执行完render),接收到新的state或props时被调用,即每次执行setState都会执行该函数,来判断是否重新render组件,默认返回true;接收两个参数:第一个是心的props,第二个是新的state。

    作用:如果有些变化不需要重新render组件,可以在该函数中阻拦

    注意:该方法在初始化渲染的时候不会调用,在使用 forceUpdate 方法的时候也不会

  7. componentWillUpdate()

    执行时间:在接收到新的props 或者 state,重新渲染之前立刻调用,在初始化渲染的时候该方法不会被调用

    作用:为即将发生的重新渲染做一些准备工作

    注意:不能再该函数中通过this.setstate再次改变状态机,如果需要,则在componentWillReceiveProps函数中改变

  8. componentDidUpdate()

    执行时间:重新渲染后调用,在初始化渲染的时候该方法不会被调用

    作用:使用该方法可以在组件更新之后操作DOM 元素

  9. componentWillUnmount()

    执行时间:组件被卸载前调用,

    作用:在该方法中执行任何必要的清理,比如无效的定时器,或者清除在 componentDidMount 中创建的 DOM 元素。

React组件中this
  • constructor(),render(),componentDidMount(),componentDidUpdate()等其他生命周期函数中的this都是组件实例
  • 其他地方的this都与当前上下文有关,因此在render输出的reactElemnt中调用其他自定义函数需要绑定this,当然也可以使用箭头函数

第八章 初识Redux

action是一个普通对象,表示将要执行的动作,例如{type:'increment'}

reducer描述了action如何把state转变成下一个state

store是个全局对象,将action和reducer以及stte联系在一起

store有以下职能:

  • 维持应用的state
  • 提供getState()方法获取state
  • 提供dispatch(action)方法更新state
  • 提供subscribe(listener)注册监听器

第九章 action创建函数与ReduxThunk中间件

reduxThunk中间件可以让action创建函数先不返回action对象,而是返回一个函数,通过这个函数延迟dispatch或者只在满足指定条件的情况下dispatch

import {createStore,applyMiddleware} from 'redux';
import thunk from 'redux-thunk'; const store = createStore(counter,applyMiddleware(thunk));

第十一章 使用react-redux链接

在所有组件的顶层使用Provider组件给整个程序提供store

ReactDOM.render(
<Provider store={store}>
...
</Peovider>,rootEl);

使用connect()将state和action创建函数绑定到组件中

export default connect(
state=>({counter:state.counter}),//将state.counter传递给组件的counter属性
ActionCreators//是所有action创建函数的集合,同时为每个action创建函数隐式绑定了dispatch方法,
//因此可以直接通过props调用这个action创建函数
)(Counter);

容器组件(Container)和展示组件(Components)

展示组件 容器组件
作用 描述如何展现(骨架、样式) 描述如何运行(数据获取、状态更新)
直接使用 Redux
数据来源 props 监听 Redux state
数据修改 从 props 调用回调函数 向 Redux 派发 actions
调用方式 手动 通常由 React Redux 生成

《React与Redux开发实例精解》读书笔记的更多相关文章

  1. csapp读书笔记-并发编程

    这是基础,理解不能有偏差 如果线程/进程的逻辑控制流在时间上重叠,那么就是并发的.我们可以将并发看成是一种os内核用来运行多个应用程序的实例,但是并发不仅在内核,在应用程序中的角色也很重要. 在应用级 ...

  2. CSAPP 读书笔记 - 2.31练习题

    根据等式(2-14) 假如w = 4 数值范围在-8 ~ 7之间 2^w = 16 x = 5, y = 4的情况下面 x + y = 9 >=2 ^(w-1)  属于第一种情况 sum = x ...

  3. CSAPP读书笔记--第八章 异常控制流

    第八章 异常控制流 2017-11-14 概述 控制转移序列叫做控制流.目前为止,我们学过两种改变控制流的方式: 1)跳转和分支: 2)调用和返回. 但是上面的方法只能控制程序本身,发生以下系统状态的 ...

  4. CSAPP 并发编程读书笔记

    CSAPP 并发编程笔记 并发和并行 并发:Concurrency,只要时间上重叠就算并发,可以是单处理器交替处理 并行:Parallel,属于并发的一种特殊情况(真子集),多核/多 CPU 同时处理 ...

  5. 读书笔记汇总 - SQL必知必会(第4版)

    本系列记录并分享学习SQL的过程,主要内容为SQL的基础概念及练习过程. 书目信息 中文名:<SQL必知必会(第4版)> 英文名:<Sams Teach Yourself SQL i ...

  6. 读书笔记--SQL必知必会18--视图

    读书笔记--SQL必知必会18--视图 18.1 视图 视图是虚拟的表,只包含使用时动态检索数据的查询. 也就是说作为视图,它不包含任何列和数据,包含的是一个查询. 18.1.1 为什么使用视图 重用 ...

  7. 《C#本质论》读书笔记(18)多线程处理

    .NET Framework 4.0 看(本质论第3版) .NET Framework 4.5 看(本质论第4版) .NET 4.0为多线程引入了两组新API:TPL(Task Parallel Li ...

  8. C#温故知新:《C#图解教程》读书笔记系列

    一.此书到底何方神圣? 本书是广受赞誉C#图解教程的最新版本.作者在本书中创造了一种全新的可视化叙述方式,以图文并茂的形式.朴实简洁的文字,并辅之以大量表格和代码示例,全面.直观地阐述了C#语言的各种 ...

  9. C#刨根究底:《你必须知道的.NET》读书笔记系列

    一.此书到底何方神圣? <你必须知道的.NET>来自于微软MVP—王涛(网名:AnyTao,博客园大牛之一,其博客地址为:http://anytao.cnblogs.com/)的最新技术心 ...

  10. Web高级征程:《大型网站技术架构》读书笔记系列

    一.此书到底何方神圣? <大型网站技术架构:核心原理与案例分析>通过梳理大型网站技术发展历程,剖析大型网站技术架构模式,深入讲述大型互联网架构设计的核心原理,并通过一组典型网站技术架构设计 ...

随机推荐

  1. 如何配置React Native真机调试-iOS

    说在前面,本教程是建立在项目已经成功在模拟器上运行的基础上,如果你是还未配置好环境的新手,建议先从官网快速入门开始:官网英文版 . 中文版 ok, 切入正题,当你已经完成好环境配置,在模拟器上成功的运 ...

  2. 源码安装ELK-5.6.10版本

    目录: 一.介绍 二.安装JDK 三.安装Elasticsearch 四.安装Kibana 五.安装Nginx 六.安装Logstash 七.安装Logstash-forwarder 八.测试 系统环 ...

  3. redis 系列3 数据结构之简单动态字符串 SDS

    一.  SDS概述 Redis 没有直接使用C语言传统的字符串表示,而是自己构建了一种名为简单动态字符串(simple dynamic string, SDS)的抽象类型,并将SDS用作Redis的默 ...

  4. Java 容器源码分析之 LinkedHashMap

    同 HashMap 一样,LinkedHashMap 也是对 Map 接口的一种基于链表和哈希表的实现.实际上, LinkedHashMap 是 HashMap 的子类,其扩展了 HashMap 增加 ...

  5. linux http服务源码编译安装详解

    相信大家大多都听过linux 的编译安装,但它到底是怎么把源代码变为自己电脑里可以应用的软件哪?今天,小编就以httpd 为例详细讲解一下. 什么是编译安装——编译:将源代码变为机器可执行的代码文件. ...

  6. 【ASP.NET MVC系列】浅谈ASP.NET MVC 控制器

    ASP.NET MVC系列文章 [01]浅谈Google Chrome浏览器(理论篇) [02]浅谈Google Chrome浏览器(操作篇)(上) [03]浅谈Google Chrome浏览器(操作 ...

  7. python json模块出现Invalid control character这个异常的原因

    今天在查看日志的时候,发现一个问题,觉得很奇怪,跑了一个多月的代码突然报错了,还是个没见过的错误. 所以今晚抽空记录下. 一.重现错误 说好的传过来的数据是json格式的呢?怎么会突然报错了呢? 二. ...

  8. 验证码图片二值化问题 BitmapData 怎么解决

    对不起,这算是一篇求助啦,先上图,防止不清楚,放大了一点,下面是图片,上面是没有二值化的,下面是二值化之后的,我其实不懂什么是二值化啦,就是一定范围变黑,变白 问题: 为什么我的结果上面还是有很多彩色 ...

  9. Syncrhonized 和 Lock的区别和使用

    相信很多小伙伴们初学多线程的时候会被这两个名词搞晕,所以这里专门介绍这两种实现多线程锁的方式的区别和使用场景 Synchronized 这个关键词大家肯定都不陌生,具体的用法就是使用在对象.类.方法上 ...

  10. 大家好,又是新的一天。今天给大家带来一些新的知识:选择器的种类和css的三种样式

    今天我们为大家 选择了 六种 选择器: 1. 标签选择器 2.id选择器 3.class选择器 4.后代选择器 5.子代选择器 6.交集选择器 我们就举三个典型的例子:后代选择器,子代选择器和交集选择 ...