createComputed
编辑此页面createComputed
创建一个新的计算,它会立即在追踪作用域中运行给定的函数,从而自动追踪其依赖项,并在依赖项发生变化时自动重新运行该函数。
该函数接收一个参数,该参数等于函数上次执行时返回的值,或在第一次调用时,等于传递给 createComputed
的可选第二个参数。
注意,函数的返回值不会以其他方式暴露出来;特别是,createComputed 没有返回值。
createComputed
是 Solid 中最直接的响应式形式,主要用于构建其他响应式原语。
例如,一些其他的 Solid 原语就是基于 createComputed
构建的。
然而,使用时应当谨慎,因为 createComputed
很容易导致比其他响应式原语更多的不必要更新。
在使用它之前,请考虑密切相关的原语 createMemo
和 createRenderEffect
。
像 createMemo
一样,createComputed
在更新时会立即调用其函数(除非你在 batch、effect 或 transition 中)。
然而,虽然 createMemo
的函数应该是纯函数(不设置任何信号),但 createComputed
的函数可以设置信号。
相关的是,createMemo
为函数的返回值提供了一个只读信号,而要用 createComputed
实现相同的功能,你需要在函数内部设置一个信号。
如果可以使用纯函数和 createMemo
,这可能会更有效率,因为 Solid 会优化 memo 更新的执行顺序,而在 createComputed
中更新信号会立即触发响应式更新,其中一些可能会被证明是不必要的。
参数
名称 | 类型 | 描述 |
---|---|---|
fn | (v: T) => T | 在追踪作用域中运行的函数 |
value | T | 传递给函数的初始值 |