Secondary Primitives

createComputed

编辑此页面
import { createComputed } from "solid-js"
function createComputed<T>(fn: (v: T) => T, value?: T): void

createComputed 创建一个新的计算,它会立即在追踪作用域中运行给定的函数,从而自动追踪其依赖项,并在依赖项发生变化时自动重新运行该函数。 该函数接收一个参数,该参数等于函数上次执行时返回的值,或在第一次调用时,等于传递给 createComputed 的可选第二个参数。 注意,函数的返回值不会以其他方式暴露出来;特别是,createComputed 没有返回值。

createComputed 是 Solid 中最直接的响应式形式,主要用于构建其他响应式原语。 例如,一些其他的 Solid 原语就是基于 createComputed 构建的。 然而,使用时应当谨慎,因为 createComputed 很容易导致比其他响应式原语更多的不必要更新。 在使用它之前,请考虑密切相关的原语 createMemocreateRenderEffect

createMemo 一样,createComputed 在更新时会立即调用其函数(除非你在 batcheffecttransition 中)。 然而,虽然 createMemo 的函数应该是纯函数(不设置任何信号),但 createComputed 的函数可以设置信号。 相关的是,createMemo 为函数的返回值提供了一个只读信号,而要用 createComputed 实现相同的功能,你需要在函数内部设置一个信号。 如果可以使用纯函数和 createMemo,这可能会更有效率,因为 Solid 会优化 memo 更新的执行顺序,而在 createComputed 中更新信号会立即触发响应式更新,其中一些可能会被证明是不必要的。


参数

名称类型描述
fn(v: T) => T在追踪作用域中运行的函数
valueT传递给函数的初始值
报告此页面问题