React 的历史与应用 React应用广泛可以用于前端应用开发,前端应用开发,结合 Electron,进行桌面应用开发。 2010年 Faccbook 在其 php生态中,引入了如p柜架,首次引入了组合式组件的思想,启发了后来的 Feact的设计。 2011年Jordan Walke创造了FaxJS,也就是后来的React 原型。 2012年在Facebcok收购Instagram后,该FaxJS项目在内部得到使用,Jordan Walke 基于FaxJS的经验,创造了React。 2013年 React 正式开源,在2013 JSConf 上Jordan Walke介绍了这款全新的框架。 2014年-今天生态大爆发,各种围绕React的新工具/新框架开始涌现: React框架并不落后,获得了成功
React 的设计思路 UI 编程痛点: 状态更新,UI不会自动更新,需要手动地调用DOM进行更新。 欠缺基本的代码层面的封装和隔离,代码层面没有组件化。 UI之间的数据依赖关系,需要手动维护,如果依赖链路长,则会遇到“Callback Hell”。
响应式系统与转换式系统不同,需要监听事件,通过消息驱动
抽象响应式与转换式:事件->执行既定的回调->状态变更
对react的期望:
状态更新,UI 不会自动更新,需要手动地调用DOM进行更新。
前端代码组件化,可复用,可封装。
状态之间的互相依赖关系,只需声明即可。
组件化设计:
组件是组件的组合/原子组件
组件内拥有状态,外部不可见
父组件可将状态传入组件内部
组件声明了状态和UI的映射
组件有Props/State 两种状态
“组件”可由其他组件拼装而成
状态归属问题:
React是单向数据流(只有父组件给子组件传东西,但子组件可以通过函数改变父组件的状态)
如何解决状态不合理上升的问题?
组件的状态改变后,如何更新DOM ?
生命周期
React (hooks)的写法与 React 实现 hooks写法原则: useState:传入一个初始值,返回一个状态,和set该状态的函数,用户可以通过调用该函数,来实现状 态的修改。 useEffect:传入一个函数,和一个数组,数组是状态的数组,称作依赖项,该函数在mount时,和依赖项被set的时候会执行。 Hook使用法则:1.不要在循环,条件或嵌套函数中调用Hook.
react实现的问题: JSX不符合JS标准语法 返回的JSX 发生改变时,如何更新DOM State/Props更新时,如何更新DOM Virtual DOM (虚拟DOM): Virtual DOM是一种用于和真实 DOM同步,而在JS内存中维护的一个对象,它具有和DOM类似的树状结构,并和DOM可以建立一对应的关系。它赋予了React 声明式的API 。 DIFF需要在更新次数少和计算速度快之间权衡
React 状态管理库 核心思想:将状态抽离到UI外部进行统一管理 推荐的 状态管理库:redux,xstate,mobx,recoil 应用级框架:NEXT.JS MODERN.JS Blitz.JS