注意学习这个在D盘:小红书第一部分的案例react/new-my-app   小红书第二部分的案例react/make-redux    小红书第三部分的案例react/my-app-higher 并且里面有说且文字

react生命周期及其它注意事件
/*
* react中组件里的render函数可以找到组件的this
* 在render方法里调用函数时函数是可以找到this的,react中组件里的方法函数里不能找到组件的this需要在render中绑定this,具体应该是点击事件里的函数
* react中状态管理放在组件的constructor里管理
* setState()设置state的,就会重新渲染render方法重新渲染
* 插值不能用for和if,可以用map
* 组件中必须继承react中的component,组件的首字母必须是大写的
* 生命周期分三个阶段,一个挂载阶段,一个是更新阶段,一个是卸载阶段
* 挂载阶段:constructor()构造函数,在创建组件的时候调用一次
* 挂载:componentWillMount()在组件即将被挂载的时候调用一次
* 一些组件启动的动作,包括像 Ajax 数据的拉取操作、一些定时器的启动等,就可以放在 componentWillMount 里面进行,例如 Ajax:
* 挂载:render()渲染
* 挂载:componentDidMount()在组件被挂载完成的时候调用一次,可以在这里使用refs,例如动画的启动
* 卸载阶段:(组件从页面中移除)
* componentWillUnmount即将卸载没有卸载完成,组件对应的 DOM 元素从页面中删除之前调用
* 更新阶段:(注意:组件一但建成进入更新阶段后不会再走constructor方法里了)
* “更新阶段”。说白了就是 setState 导致 React.js 重新渲染组件并且把组件的变化应用到 DOM 元素上的过程,这是一个组件的变化过程。
* React.js 当中可以直接通过 setState 的方式重新渲染组件,渲染的时候可以把新的 props 传递给子组件,从而达到页面更新的效果。
* componentWillReceiveProps(nextProps)组件从父组件接收到新的 props 之前调用。,父组件的更新会触发子组件的这个函数,nextProps父组件更新的时候带来的数据
* shouldComponentUpdate(nextProps,nextState),你可以通过这个方法控制组件是否重新渲染。如果返回 false 组件就不会重新渲染。是否需要重新渲染,Return false/true
* componentWillUpdate(nextProps,nextState),即将更新,组件开始重新渲染之前调用。
* render渲染
* componentDidUpdate(prevProps,PrevState)完成更新,组件重新渲染并且把更改变更到真实的 DOM 以后调用
* 尽量不要在render里去改状态(setState),尽量在相应的生命周期里去改
*
*
* */

react的redux共分几个部分各个部分的原理如下:

provider : 它做的事情就是与context建立联系,把传进来的store放到context里,并把所有组件当成自己的子组件,这样所有组件都可以经过connect之后都可以取到react-redux里的值( Provider 做的事情也很简单,它就是一个容器组件,会把嵌套的内容原封不动作为自己的子组件渲染出来。它还会把外界传给它的 props.store 放到 context,这样子组件 connect 的时候都可以获取到。)

store: 它就像是一个指挥部,会暴漏出来所有供外使用的方法,里面会写好各方法的处理逻辑,及调用顺序( getState, dispatch, subscribe)

dispatch: 它是处理state数据,也就是你传进来的想要改变的state里的值也就是形参action,它会把你传进来的action交给reducer去处理,reducer处理后调用渲染方法根据最新数据渲染页面(要改哪些数据以及指令类型)

reducer:它是根据action(也是你的指令的类型,它根据你传的类型去判断 它要干啥,要改哪个数据)去判断哪此数据需要更新(把要更新的数据复制出来一份去替换旧的,这样对象地址就不一样了,可以判断旧数据是否更新),从而反回最新的数据,也就是根据浅拷贝的原因,把想改变的数据用新对象替换,如果不用新对象替换引用类型地址没有变视为不更新

subscribe:渲染页面,也就是里面调用的setState,调用它后,就会调用render方法重新渲染,根据最新的数据

connect(高阶组件):通过高阶组件与原生的context通信,它就是将最新的数据绑定要传进来的组件上,使被传进来的组件可以取到最新的state数据,也就是所谓的被包装组件

Connect 会去 context 里面取出 store。把 store 里面的数据取出来通过 props 传给 传进来的函数

connect

connect中mapStateTopProps参数的作用:(高阶组件的入参)
mapStateTopProps 相当于告知了 Connect 应该如何去 store 里面取数据,然后可以把这个函数的返回结果传给被包装的组件,还需要告诉高级组件我们需要什么数据,高阶组件才能正确地去取数据。

connect中mapDispatchToProps参数的作用:
来告诉它我们的组件需要如何触发 dispatch。我们把这个参数叫 mapDispatchToProps

 

2018年9月12日 学习react总结 
1、在setState里更改state里的值,如何在当前组件,当前方法里取到最新的值: 
      (1)setState里加入第二个参数,为回调函数,在此回调内可以取到最新值  
      (2)在render生拿周期里直接取值 
      (3)加setTimeOut 
2、不能在子组件里直接改props里的值,解决办法可以存在变量里,或在父组件里改 
3、使用map之前进行非空判断以防报错 
4、写行间样式用鸵峰式写法 
5、在子组件使用props里的值时要先定义下初始值

学习react心得及总结的更多相关文章

  1. 从0开始学习react(一)

    本人前端小菜鸡一枚,因为公司要重构网站,打算用用react,毕竟一切为了学习(装B)嘛!!! 在学习react之前,看了许多资料,博客,官方文档之类的,可我这记吃不记打的记性,还是需要在这里记录一下, ...

  2. 正式学习React(五) react-redux源码分析

    磨刀不误砍柴工,咱先把react-redux里的工具函数分析一下: 源码点这里  shallowEqual.js export default function shallowEqual(objA, ...

  3. 正式学习React (七) react-router 源码分析

    学习react已经有10来天了,对于react redux react-redux 的使用流程和原理,也已经有一定的了解,在我上一篇的实战项目里,我用到了react-route,其实对它还只是 停留在 ...

  4. 正式学习React(一) 开始学习之前必读

    为什么要加这个必读!因为webpack本身是基于node环境的, 里面会涉及很多路径问题,我们可能对paths怎么写!webpack又是怎么找到这些paths的很迷惑. 本文是我已经写完正式学习Rea ...

  5. 正式学习 react(三)

    有了基础的webpack基础,我们要对react的基本语法进行学习. 我这个教程全部用es6 实现.可能会忽略一些最基本的语法讲解,这些你在官网上或者其他别的地方都比我讲的全. 今天我要讲一下reac ...

  6. 学习react,动手实现一个小demo(仿知乎问答)

    学习react也有一周的时间,最近自己做了个仿知乎问答的小demo,项目源码在github上:https://github.com/yang302/reactQa 使用技术:bower+gulp+re ...

  7. 五分钟学习React(三):纯HTML代码搭建React应用

    上一期我们使用了React官方的脚手架运行React应用.大家可能会觉得这种方法很繁琐,需要配置各种第三方插件.JQuery时代的前端真是让人怀念.这一期,我就带领大家创建一个"怀旧版&qu ...

  8. 五分钟学习React(一): 什么是React

    在前端的世界里,我们要处理的文件不是太多,而是太少.每天开发项目将html.css.js.图片.字体文件都像大杂烩一般加载都网页上.当应用变得越来越臃肿的时候,会发现js用了那么多全局变量,css的继 ...

  9. 学习React Native必看的几个开源项目

    学习React native ,分享几个不错的开源项目,相信你学完之后,一定会有所收获.如果还没有了解RN的同学们可以参考手把手教你React Native 实战之开山篇<一> 1.Fac ...

随机推荐

  1. URAL 1698. Square Country 5(记忆化搜索)

    题目链接 题意 : 自守数的定义:如果某个数的平方的末尾几位数等于这个数,那么就称这个数为自守数.例如5*5=25,则5就是自守数.让你求不超过n位的自守数有多少 思路 : 实际上,自守数还有两个性质 ...

  2. ERROR: from PIL import Image ImportError: No module named PIL

    ERROR: from PIL import Image ImportError: No module named PIL 到 http://www.pythonware.com/products/p ...

  3. Appium常用API(一)

    Appium作为当下一款移动应用的自动化测试工具,对于测试来说重要性不言可寓,废话不多说,下面总结下它常用的API: 1.contextscontexts(self): Returns the con ...

  4. 【Head First Java 读书笔记】(八)接口与抽象类

    接口是什么?它是一种百分之百纯抽象的类. 什么是抽象类?即无法初始化的类.   例如,我们设计一个animal类,以此类为父类,分别设计了多种动物子类,例如Lion,Tiger,Cat,Wolf,Do ...

  5. [Erlang09]Erlang gen_server实现定时器(interval)的几种方法及各自的优缺点?

    方法1: %%gen_server:部分call_back function. -define(TIME,1000). init([]) –> erlang:send_after(?TIME,s ...

  6. android hook getdeceiveid

    很多手机软件使用了手机绑定.QQ,微信等.如果使用了不同的设备,则需要验证码. 要用一台手机来模拟与另一台手机一样环境,估计hook 系统的相关函数可以实现. 想着应该有现成的软件的,例如 smart ...

  7. BHO插件操作IE浏览器,js调用C#方法

    BHO是IE浏览器的扩展程序,全名Browser Helper Object,文件格式为DLL文件.可对IE浏览器的界面和访问内容进行修改操作.BHO只适用于IE浏览器,对其他任何浏览器都没有作用.( ...

  8. Spring Boot - 依赖注入

    @Autowired 查找被注解的变量类型,找到所有此类型的构建或此类型子类的构建 如果一个也没有找到,看required参数,false则用null,true则失败(默认,即spring会启动失败) ...

  9. Zeal - 开源离线开发文档浏览器

    https://zealdocs.org/ win10上暂时安装版会crash,请用portalable的解压版

  10. ie7间隙问题

    正常浏览器显示,如谷歌浏览器: ie7浏览器效果如图: html代码: <ul> <li class="current"><a href=" ...