Solid.js 核心指南
Solid.js 是一个声明式、高效的 JavaScript 库,用于构建用户界面。它不使用虚拟 DOM,而是通过将模板编译为真实的 DOM 节点,并使用细粒度的响应式系统来更新它们。
1. 核心哲学:无虚拟 DOM
与 React 不同,Solid.js 没有虚拟 DOM (Virtual DOM)。
- 编译时优化:Solid 在编译阶段将 JSX 转换为高效的 DOM 操作。
- 运行一次:组件函数本身只在初始化时运行一次。
- 细粒度更新:只有当状态改变时,受影响的特定 DOM 节点才会更新,而不是重新运行整个组件。
2. 响应式基础 (Primitives)
Solid 的响应式系统由三个核心部分组成:
Signal (createSignal)
类似于 React 的 useState,但返回的是一对 getter 和 setter。
import { createSignal } from "solid-js";
function Counter() {
const [count, setCount] = createSignal(0);
// 注意:count 是一个 getter 函数,必须调用它才能获取值
return <button onClick={() => setCount(count() + 1)}>{count()}</button>;
}
Memo (createMemo)
类似于 React 的 useMemo,用于缓存派生状态。
const doubleCount = createMemo(() => count() * 2);