响应式系统与React|青训营笔记

145 阅读3分钟

这是我参与[第四届青训营]笔记创作活动的第十天。

01.React的历史与应用

image.png

前端应用开发,如Facebook、Instagram、Netflix网页版

image.png

移动原生应用开发,如Instagram、Disscord、Oculus。

image.png

结合Elcctron,进行桌面应用开发

2010年Facebook在其php生态中,引入了xhp框架,首次引入了组合式组件的思想,启发了后来的React的设计。

2011年Jordan Walke创造了FaxJS,也就是后来的React原型

2012年在Facebook 收购Instagram后,该FaxJS项目在内部得到使用,Jordan Walke基于 FaxJS的经

image.png

2013年React正式开源,在2013 JSConf 上 Jordan Walke介绍了这款全新的框架:

image.png

2014年-今天生态大爆发,各种围绕React的新工具/新框架开始涌现:

image.png

02. React 的设计思路

UI编程痛点

01.状态更新 UI不会自动更新,需要手动地调用DOM进行更新

02.欠缺基本的代码层面的封装和隔离,代码层面没有组件化。

03.UI之间的数据依赖关系,需要手动维护.如果依赖链路长,则会遇到“Callback Hell”。

响应式与转换式

image.png

响应式编程

image.png

image.png

01.状态更新,UI自动更新。 “状态更新,UI不会自动更新,需要手动地调用DOM进行更新。

02.前端代码组件化,可复用,可封装。 “欠缺基本的代码层面的封装和隔离,代码层面没有组件化。”

03.状态之间的互相依赖关系,只需声明即可。 “UI之间的数据依赖关系,需要手动维护,如果依赖链路长,则-"Callback Hell”。”

组件化

image.png

组件设计

1.组件声明了状态和U的映射。

2.组件有Props / State两种状态。

3.“组件"可由其他组件拼装而成。

组件代码的样子: 1.组件内部拥有私有状态 State。

2.组件接受外部的Props状态提供复用性。

3.根据当前的State/Props,返回一个ui。

生命周期

image.png

总结

1.组件是组件的组合/原子组件

2.组件内拥有状态,外部不可见

3.父组件可将状态传入组件内部

React是单向数据流

03.React (hooks)的写法

import React, { useState } from 'react ';
function Example() {
// Declare a new state variable,which we'll call "count"const [count, setCount] = useState(0);
return (
<div>
<p>You clicked {count} times</p>
<button onClick={()=>setCount( count + 1)}>
Click me
</button>
</div>
);

04. React的实现

Problems 01.JSX 不符合JS标准语法

02.返回的JSX发生改变时,如何更新DOM

03.State/Props更新时,要重新触发render函数

problem1

"use strict";

const Test = props =>{
const {
url
}= props;
return /*#__PURE__*/React.createElement( ""div",{
className: "root"
},/*#__PURE__*/React.createElement( "img",{
src: url
}));
};

image.png

problem2

Virtual DOM(虚拟DOM)

Virtual DOM是一种用于和真实DOM同步,而在JS内存中维护的一个对象,它具有和DOM类似的树状结构,并和DOM 可以建立一一对应的关系。

它赋予了React声明式的API:您告诉React希望让U是什么状态,React就确保DOM匹配该状态。这使您可以从属性操作、事件处理和手动DOM更新这些在构建应用程序时必要的操作中解放出来。

05. React状态管理库

核心思想

将状态抽离到UI外部进行统一管理

image.png

推荐:

image.png

状态机

image.png

当前状态,收到外部事件,迁移到下一个状态

06.应用级框架科普

image.png

硅谷明星创业公司Vereel的 React开发框架,稳定,开发体验好,支持Unbundled Dev,swC等,其同样有Serverless一键部暑平台帮助开发者快速完成部署。口号是"Let's Make Web Faster"

image.png

字节跳动Web Infra团队研发的全栈开发框架,内置了很多开箱即用的能力与最佳实践,可以减少很多调研选择工具的时间。

image.png

无API思想的全栈开发框架,开发过程中无需写API 调用与CRUD逆辑,适合前后端紧密的小团队项目。