一、React是什么?
很神奇,兜兜转转。又回到了最初问过的问题,最开始问这个问题的时候,答案多半是官方给出的答案,A Javascript Library for building user interfaces,简短描述来说是一个Ui库。半知半解。但是开始接触到前端工程化相关知识之后,再次审视React。又有了不一样的看法。从工程化的角度去思考这个问题,而不仅仅从作用去看待它
React是前端工程化中视图工程化的重要实践。如果将前端视为一个生态系统,那么React就是将这个生态系统切割为小型生物群落的法则之一,对应的渲染规则就像是二氧化碳和水,不同的规则下发生不一样的变化,产生不同的现象。 对比html+javascript模板引擎的组合,无疑就像盘古开天辟地一样的作用。从此大地不再是连接成一片,而是切割成元素,可以自由组合和变化。形成千变万化的生物。
二、从生态系统的角度-回归React的特性梳理
1.在这个生态系统下,什么是雷鸣闪电,狂风雨水,可以引起生态的化学反应?
2.什么情况下React是晴天?作为上帝之手,如何让这片大地更加云淡风轻?
3.生态系统下,有哪些基本组成元素?
4.如何打造更和谐的生态?
5.了解这片天空之下常见生命的基本行为和繁衍准则?
6.如何管理穿插在生态系统之下的细菌变化,它们必要存在。且不断变化,稍不留意,就能引发生态危机,如何管理好这些细菌们,让它们正常健康的运转?
三、带着结构和疑问去寻找答案
1.什么时候会打雷下雨闪电呢?
(1)当state状态发生变化,并且shoudupdate为true的时候,会发生巨大变化(重新渲染)--开始打雷
(2)当组件的props任意一个值发生变化,且shoudupdate为true,且当前组件的父组件以上的组件shoudupdate为true时候,会发生巨大变化(重新渲染)--开始下雨
(3)当组件的shoudupdate为false,但是满足条件1的时候,仍然会发生变化(重新渲染)-开始闪电
当然,大部分时候打雷伴随着下雨和闪电。 偶尔也会出现晴空霹雳的情况。
2.啥时候晴天,万里无云,云淡风轻呢?
自然是不下雨,不打雷,不闪电的时候。不发生上面三种情况的时候,称为晴天。
3.生态系统的基本组成元素?
(1)有行为的动物:带有事件的组件和模块。
(2)无行为的植物:静态ui组件
(3)繁衍与进化:组件之间的组合,拥有了更多的生命行为(事件)。
(4)繁荣:众多动植物形成的大型生态系统,伴随着阳光(数据),开始着各自的生命生活。
(5)衰败和凋零:众多组件组合在一起,往往伴随着频繁的渲染。大量的消耗生命(cpu)的行为,导致渲染次数增多。生命体壮大之后,走向衰败。
(6)重生和演变:大型生命体恐龙,因为大量消耗生命的行为,被生态系统演变成为了众多有机的小生命体(组件的重新划分),形成不同的生态圈群落
4.如何打造更加稳定的生态?
(1)打造有机生命群落,让互利共生的有机体结合成生态圈: 抽离公共组件,重新组合。
(2)控制大型生命体的存在数量,有效减少衰败和凋零的可能:切割组件,让子组件单独渲染,而不是一个组件时刻重新发生渲染。
(3)引入天气管理者reduce、Hook,控制常常发生动乱的区域:引用对应的状态管理机制,集中管控全局的状态。
5.因为熟悉,所以创造---
大到一个界面,小到一个按钮。它们可能发生怎样的交互,怎样的行为。有什么属性,怎样的状态。从状态,属性,行为三个维度定义生命体。了解三维度下的生命,才能创造新得生命体。
6.细菌的存在是必要的
贯穿全局的行为,如https,cookies,权限管理context,路由跳转、history等元素,就像细菌一样,是重要的组成部分,集中管控和观察它们行为。更好的控制细菌状态。