React方法论
按照目前学习进度不定更新
- react渲染的效率,看起来是全体的渲染,其实react在虚拟dom上的处理简直完美。它会过滤掉那些原来就有的东西,不去全体地重复渲染一遍。
- 即将进入实战,React至今的个人看法
- React像一个中央集权的国度。但是这样的执行力很强(限制了xss攻击),效率很高,管理层面清晰度也很高。
- Smart组件 = Dumb组件 + 部分数据的管理 Smart组件就是地方官员,能够从上层获取一定的资源,之后由Dump组件分发 Dump组件通过考公务员成为地方官员(哈哈哈哈)
- 经过了权力的分配,ReactApp已经没有了很多逻辑。也可以这么说,它成为了一个国家的象征。所以,它是结构清晰而简单的。大型项目中,这是必要的
- 财政由一个地方存储,store,由固定的程序分配,dispatch 。 没有一系列的手续,你是不能从国库中获取资源的。 所以它很安全,很有序。
- 最后挂载上去的还是由ReactDOM来过载,ReactDOM就像是土地分配的。它是上帝,它决定了哪块王国的土地在哪里生长。
- 一个国家的生成是科学的。它主要有(常用的)constructor来构建(这就是一个王国的基础资源),componentWillMount来决定虚拟DOM的部分建设(国家的方法论),render是正式国家的建造,componentDidMount是国家初成,componentWillUnmount是国家新的改革方针,比如说计时器就相当于建国初期的军队,建国之后,安定下来了军队一定要取消,不然会出事情(关于componentWillMount加上的计时器要在componentUnMount取消)
主要细节的学习
- 总算看懂了React小书最后一节的评论实战,它的意思是其实commentApp已经不用来当做Smart组件了,它将逻辑分发给commentInput和commentList,而commentApp就像皇帝一样,只要躺着分配人力资源就行了,做事的并不是皇帝,皇帝只要会识人就够了。而redux就像是一个国家的财政大臣,用来存储数据资源,分配资源。
- 为什么要写一个component中的dump(呆呆的组件)又要写一个containers这样的高阶组件呢(Smart,机智的逻辑处理组件) 。 为了重用,写两个其实只用改动部分,而逻辑处理需要的是聪明的组件。所以,为了任务,我们需要smart的container,为了整个团队的效率我们需要dump的组件。
- React的中央集权式的管理,这样有什么好处呢,所有的props逐级递交,显得非常有秩序。
- 某个属性比较有风险,React团队就将他们设置的比较难以使用,这还是真是好玩哈哈。符合人懒惰的天性。
- 一切都是那么顺理成章。所以给人的感觉就是React是那样的人性化和完美。而也正是觉得顺理成章才能更好地理解这门语言。
运行的过程constructor=>componentWillMount=>render=>componentDidMount=>componentWillUnmount
.
而关于计时器的部分,如果用一个state控制它的装载和卸载.如果这个时候没有componentWillUnmount,就会报错,因为定时器还在运行,因为JS的闭包特性,这样会导致严重的内存泄露.
所以,我们的componentWillUnmount就诞生了,它是出来救场的! React中的所有状态都被React写死了,或者这么说,它让html的控件都为React掌控,也就是说,安全性大大提高了。所有的Input的输入都由 setState 来控制,真是太神奇了。
相比Vue来说,React写的确实不是那么痛快,也许是我不熟,还有编辑器的锅吧。
关于状态提升,比如React小书中的评论的例子。由父组件CommentApp来分发commets状态给CommentList,这样的好处是,当出现了CommentList2的时候它也能够收到传来的信息。但是,如果我们的CommentApp中又出现了上级就会出现非常尴尬的局面了。我们不能总是通过修改props的拥有者。于是就有了Redux。一切都那么顺理成章。
关于react和react-dom的分开也是,React不只是服务于网页PC端,它还有它其他的业务,所以,把他们分开使得它们更有针对性而不臃肿。
React里面的setState是异步的,这里有个坑,前几天刚研究完异步的callback和promise,今天出现问题了马上想到是这个哈哈哈。查看链接:https://segmentfault.com/q/1010000007343714
React方法论的更多相关文章
- React Native学习方法论
这是我技术公众号的第一篇文章,也是React Native系列文章的第一篇,对我的文章感兴趣的可以加我微信16230091进行关注. 本文表面上讲React Native(以下简称RN),实际上对于学 ...
- 前端自动化测试 —— TDD环境配置(React+TypeScript)
欢迎讨论与指导:) 前言 TDD -- Test-Drive Development是测试驱动开发的意思,是敏捷开发中的一项核心实践和技术,也是一种测试方法论.TDD的原理是在开发功能代码之前,先编写 ...
- CSS方法论完全总结
软件开发领域所有的工程问题,归根结底衍生自一个问题:代码量大了怎么办? 对于CSS而言,因代码量增大导致的核心问题是命名冲突. 解决命名冲突的方法论是模块化,围绕此方法论,演化出种种模块化方案. 一. ...
- 打造高可靠与高性能的React同构解决方案
前言 随着React的兴起, 结合Node直出的性能优势和React的组件化,React同构已然成为趋势之一.享受技术福利的同时,直面技术挑战,在复杂场景下,挑战10倍以上极致的性能优化. 什么是同构 ...
- 如何用 React 构建前端架构
早期的前端是由后端开发的,最开始的时候仅仅做展示,点一下链接跳转到另外一个页面去,渲染表单,再用Ajax的方式请求网络和后端交互,数据返回来还需要把数据渲染到DOM上.写这样的代码的确是很简单.在We ...
- react组件的生命周期
写在前面: 阅读了多遍文章之后,自己总结了一个.一遍加强记忆,和日后回顾. 一.实例化(初始化) var Button = React.createClass({ getInitialState: f ...
- 十分钟介绍mobx与react
原文地址:https://mobxjs.github.io/mobx/getting-started.html 写在前面:本人英语水平有限,主要是写给自己看的,若有哪位同学看到了有问题的地方,请为我指 ...
- RxJS + Redux + React = Amazing!(译一)
今天,我将Youtube上的<RxJS + Redux + React = Amazing!>翻译(+机译)了下来,以供国内的同学学习,英文听力好的同学可以直接看原版视频: https:/ ...
- React 入门教程
React 起源于Facebook内部项目,是一个用来构建用户界面的 javascript 库,相当于MVC架构中的V层框架,与市面上其他框架不同的是,React 把每一个组件当成了一个状态机,组件内 ...
随机推荐
- 使用 nginx 和 rtmp 插件搭建视频直播和点播服务器
使用 nginx 和 rtmp 模块 ,可以很容易地搭建一个视频直播和点播服务器出来. 首先,看一下最经典的参考文献: How to set up your own private RTMP serv ...
- oddjob之smooth关闭程序
java程序的smooth关闭策略可以采用hook跟观察者的模式实现 无限等状态,如果状态出现可以关闭的事件则进行关闭 虚拟机的关闭通过钩子调用关闭,如果关闭失败,在超时时间内强制杀掉jvm 状态类 ...
- 手动导入XMPPFramework框架
环境: Xcode 8.2.1 XMPPFramework 3.6.5 (下载地址) Objective-C (项目使用的语言,最新版的3.7.0要求convert to swift) 1.下载XMP ...
- BZOJ2733:[HNOI2012]永无乡
浅谈线段树合并:https://www.cnblogs.com/AKMer/p/10251001.html 题目传送门:https://lydsy.com/JudgeOnline/problem.ph ...
- 洛谷【P2005】A/B Problem II
题目传送门:https://www.luogu.org/problemnew/show/P2005 高精除低精:https://www.cnblogs.com/AKMer/p/9724556.html ...
- Python 写文件时的Unicode设置
今天在把Evenote的笔记内容写为文件时出错: f.write(content) UnicodeEncodeError: 'gbk' codec can& ...
- android获取时间差的方法
本文实例讲述了android获取时间差的方法.分享给大家供大家参考.具体分析如下: 有些时候我们需要获取当前时间和某个时间之间的时间差,这时如何获取呢? 1. 引用如下命名空间: import jav ...
- asp中实现lable自动换行
asp中实现lable自动换行 因为在用Label标签显示内容时,内容太多,想实现自动换行.我们知道在WINFORM中程序中,有一个属性是AUTOSIZE 改成FALSE 是可以实现的.但是在ASP. ...
- [原]toString()方法的复写作用, 以及打印集合.
java中的每个类的根都是Object的子类. 必然有拥有了Object的所有方法. 在package java.lang.Object源码中: public String toString() { ...
- [poj1737]Connected Graph(连通图计数)
题意:输出题中带有$n$个标号的图中连通图的个数. 解题关键: 令$f(n)$为连通图的个数,$g(n)$为非联通图的个数,$h(n)$为总的个数. 则$f(n) + g(n) = h(n)$ 考虑标 ...