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 把每一个组件当成了一个状态机,组件内 ...
随机推荐
- Agc011_C Squared Graph
传送门 题目大意 给定$n$个点$m$条边的简单图(无重边无自环),将有序点对$\{a,b\}$作为新的点,新产生的$n^2$个点中对于两个点,$\{a,b\},\{x,y\}$,当且仅当原图中存在边 ...
- TYVJ P1728 普通平衡树
P1728 普通平衡树 时间: 1000ms / 空间: 131072KiB / Java类名: Main 背景 此为平衡树系列第一道:普通平衡树 描述 您需要写一种数据结构(可参考题目标题),来维护 ...
- Excel文本获取拼音
[说明] 版本:Excel 2010 文件后缀:.xls 有在.xlsb文件下使用未成功.建议使用.xls后缀. 1.调出“开发工具” 步骤:文件-->选项-->自定义功能区-->勾 ...
- ACM学习历程—HDU5407 CRB and Candies(数论)
Problem Description CRB has N different candies. He is going to eat K candies.He wonders how many co ...
- BZOJ3307:雨天的尾巴
浅谈线段树合并:https://www.cnblogs.com/AKMer/p/10251001.html 题目传送门:https://lydsy.com/JudgeOnline/problem.ph ...
- 找工作--volatile
在Java编写的程序中,有时为了提高程序的运行效率,编译器会自动对其进行优化,把经常访问的变量缓存起来,程序在读取这个变量时有可能会直接从缓存(例如寄存器)中来读取这个值,而不会从内存中读取.这样做的 ...
- Poj 2403 Hay Points(Map)
一.题目大意 实现一个工资计算系统.工资的计算规则是:首先,给定一些关键字和对应的价值,这个相对于字典.然后给出的是求职者的描述,如果这个描述中包含关键字则加上对应的价值,总得价值就是这个求职者的工资 ...
- 关于audio.js的研究
——杂言:audio.js结合使用html5的audio组件实现了音频的原位播放功能.虽然项目里已经使用一段时间了,不过我是最近才开始有所接触,惭愧.个人见解若有不对,请帮忙纠正,谢谢. 官方相关链接 ...
- ls- 查看文件信息
通过ls 命令不仅可以查看linux文件夹包含的文件,而且可以查看文件权限(包括目录.文件夹.文件权限),查看目录信息等等,ls 命令在日常的linux操作中用的很多,在此给大家介绍一下ls 命令的使 ...
- [51nod1116]K进制下的大数
解题关键:$A\% (k - 1) = (A[0] + A[1]*k + A[2]*{k^2} + ...A[n]*{k^n})\% (k - 1) = (A[0] + A[1] + ...A[n]) ...