原生 Signal 来了,React 还跟得上吗?
2026年回头看,前端圈这一年确实挺有意思。
TC39委员会正式宣布:Signals提案通过了,要进ECMAScript 2026标准。这意味着JavaScript从根儿上就有了原生的响应式状态管理,不用再靠第三方库了。
消息一出,最尴尬的恐怕就是React社区。
原生Signal到底是什么?
以前在React里写状态,得忍受Hooks那一套东西。useEffect的依赖数组写漏了就是个bug,代码写起来提心吊胆的:
// React写法
useEffect(() => {
console.log(count);
}, [count]); // 漏了count就不执行了现在ES2026里的原生Signal就不一样了。直接像写普通变量一样写响应式代码,引擎会自动帮你追踪依赖:
// 原生Signal写法
const count = new Signal.State(0);
const double = new Signal.Computed(() => count.get() * 2);
new Signal.subtle.Watcher(() => {
console.log(`计数:${count.get()},两倍:${double.get()}`);
}).watch();
count.set(1); // 自动更新关键是啥?没有虚拟DOM的重绘压力,没有Hooks那套心智负担。改哪就更新哪,细粒度控制。
React的选择现在看有点尴尬
现在社区吵得最凶的就是这个:
Vue、Solid、Svelte这些框架的开发者高兴坏了。它们这么多年一直坚持的信号/响应式模式,终于被官方认可了。
反观React这边,安静得很。React核心团队这些年一直坚持“UI = f(state)”这套函数式理念,不愿意引入Signal。结果现在浏览器自己都支持高效响应式追踪了,React那套又重又容易出错的Fiber调度和虚拟DOM比较,是不是真成了过时的技术债?
以后还需要框架吗?
原生Signal来了,意味着“不用框架开发”这事儿变得可行了。
以前需要Vue或者React整个运行时才能搞定的复杂数据流,现在几行原生JS就能搞定:
性能更好:原生引擎实现的Signal,比任何第三方库都快
体积更小:不用打包几百KB的框架代码
跨框架复用:用标准Signal写的状态逻辑,React能用,Vue也能用
有人看好有人唱衰
有人说:“Signal是JS语言倒退,让代码变得不可预测。”
也有人说:“React Hooks才是反人类的设计,原生Signal救了前端开发者的发际线。”
我的看法
说实话,框架不会消失。但以后框架的角色会变——不再是给你一套完整的状态管理方案,而是在原生Signal基础上提供更好的开发体验。
对于React开发者来说,现在是个观望的好时候。React团队还没表态要不要支持原生Signal,但社区里已经有人在尝试把Signal和React结合起来了。
2026年了,你是继续坚持React的函数式信仰,还是试试原生Signal带来的新体验?
本文内容仅供个人学习、研究或参考使用,不构成任何形式的决策建议、专业指导或法律依据。未经授权,禁止任何单位或个人以商业售卖、虚假宣传、侵权传播等非学习研究目的使用本文内容。如需分享或转载,请保留原文来源信息,不得篡改、删减内容或侵犯相关权益。感谢您的理解与支持!