为什么说useSignal()是Web框架的未来

内容列表

什么是 useSignal

一个简单的 react 组件是下面这样的:它使用了useState这个hooks钩子函数

useSignal()就是 state 和 setState 的改良版本,它写起来是这样的:

虽然看起来没什么特别的,只是省略了一个 setState,但是两者的原理其实完全不同。Signals 和 State 之间的主要区别在于 Signals 返回一个 getter 和一个 setter ,而非响应式系统返回其值(和一个 setter )。

Signals 是可响应的!就意味着它们会追踪对状态感兴趣的(订阅)人,如果状态发生了变化,就通知订阅者状态发生了变化。要具有响应性,Signals 必须收集谁对 Signals 的值感兴趣(订阅)。他们通过观察在哪些上下文中调用 state-getter 来获得这些信息。通过从 getter 获取值的行为,可以告诉 Signals 这个地方对其值感兴趣。如果值发生更改,则需要使该位置发生重新计算。换句话说,调用 getter 将创建订阅。

综上所述 Signals 其实是一个订阅发布系统,只是订阅这个步骤是自动实现的,这样的好处是不需要diff,也不需要死去活来的不断调用 App,减少开销。

它其实有点像vue的ref或者react的useRef;但是实际上:useRef() 的使用与 useSignal() 完全相同,用于传递对 state 的引用,而不是 state 本身。useRef() 缺少的是订阅跟踪和通知。

相关

CSS 清除浮动

2018-05-21

在浮动布局中,有时候会因为父元素没有设置高度而子元素浮动导致父元素坍塌,我们就需要清除浮动撑起父元素的高度,在这里总结一下常用方法。

了解更多

从贝塞尔曲线的计算感受数学建模的魅力

2022-12-01

最近在做可视化相关的东西,需要计算贝塞尔曲线上一点的坐标位置,从这个解决过程中感受到了数学建模的魅力。

了解更多

何为失业?何为工作

2024-12-02

2020年毕业经济开始下行,到现在为止从业几年后对it从业者,与工作有些许感悟

了解更多