Store Utilities

reconcile

编辑此页面

reconcile 专门用于在无法应用细粒度更新的情况下处理数据变更的差异比较。 这在处理来自存储的不可变数据或处理大型 API 响应时特别有用。

import { reconcile } from "solid-js/store";
import type { NotWrappable, Store } from "solid-js/store";
function reconcile<T>(
value: T | Store<T>,
options?: {
key?: string | null;
merge?: boolean;
} = { key: "id" }
): (
state: T extends NotWrappable ? T : Store<T>
) => T extends NotWrappable ? T : Store<T>;

reconcile 有一个 key 选项,可以在可用时用于匹配项目。 value 参数接受类型为 T 的值或包含类型为 T 的值的 Store。 这表示需要协调的数据。

reconcile 函数通过执行差异比较过程来帮助管理数据变更,这在应用细粒度更新具有挑战性或效率低下的场景中特别有用。

keymerge 选项提供了根据具体需求自定义协调过程的灵活性。

// 订阅一个可观察对象
const unsubscribe = store.subscribe(({ todos }) => (
setState('todos', reconcile(todos));
);
onCleanup(() => unsubscribe());
选项
选项类型默认值描述
keystring"id"指定在协调过程中用于匹配项目的键
mergebooleanfalse当 merge 为 false 时,在可能的情况下执行引用检查以确定相等性,不具有相同引用的项目将被替换。当 merge 为 true 时,所有差异比较都推送到叶子节点,有效地将先前的数据转化为新值。
报告此页面问题