【响应式系统与react | 青训营笔记】

44 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第6天。
今天学习的内容是响应式系统与react,通过观看了学习视频,我对响应式系统与react有了一定了理解,其中最吸引我的也是react的设计思路,我的总结如下: (1)变换
设计 React 的核心前提是认为 UI 只是把数据通过映射关系变换成另一种形式的数据。同样的输入必会有同样的输出。这恰好就是纯函数。
(2)抽象
因为我们不可能仅用一个函数就能实现复杂的 UI。重要的是,我们需要把 UI 抽象成多个隐藏内部细节,又可复用的函数。通过在一个函数中调用另一个函数来实现复杂的 UI,这就是抽象。
(3)组合
为了真正达到重用的特性,只重用叶子然后每次都为他们创建一个新的容器是不够的。我们还需要可以包含其他抽象的容器再次进行组合。我理解的“组合”就是将两个或者多个不同的抽象合并为一个。
(4)状态
UI 不仅仅是对服务器端或业务逻辑状态的复制。实际上还有很多状态是针对具体的渲染目标。比如在一个 text field 中打字,它不一定要复制到其他页面或者你的手机设备,滚动位置这个状态是一个典型的你几乎不会复制到多个渲染目标的。我们倾向于使用不可变的数据模型。我们把可以改变 state 的函数串联起来作为原点放置在顶层。
(5)列表
大部分 UI 都是展示列表数据中不同 item 的列表结构。这是一个天然的层级。为了管理列表中的每一个 item 的 state ,我们可以创造一个 Map 容纳具体 item 的 state。
(6)连续性
然而当 UI 中有太多的列表,明确的管理就需要大量的重复性样板代码。我们可以通过推迟一些函数的执行,进而把一些模板移出业务逻辑。然后我们可以从核心的函数外面传递 state,这样就没有样板代码了。
(7)代数效应 多层抽象需要共享琐碎数据时,一层层传递数据非常麻烦。如果能有一种方式可以在多层抽象中快捷地传递数据,同时又不需要牵涉到中间层级,这个方式即“context”。