Solid 有createMemo,我认为它可能有用,但它说“备忘录函数不应通过调用设置器来更改其他信号(它应该是“纯”)。”,这不适合我的用例。
Solid 没有useCallback,因为组件只安装一次并且不会重新渲染,React 有useCallback,这样开发人员就有另一种方法来防止重新渲染。
createMemo目的是缓存导出的信号,例如检索运行昂贵的斐波那契值的信号。
const [count, setCount] = createSignal(0);
const fib = createMemo(() => fibonacci(count()));
Run Code Online (Sandbox Code Playgroud)
正如您所指出的,createMemo不应调用其他信号设置器,这样 Solid 可以进行优化,例如所有备忘录最多可以更新一次以响应依赖性更改。
const [count, setCount] = createSignal(0);
const [lastName, setLastName] = createSignal('');
const fib = createMemo(() => {
setLastName(value) // DONT DO THIS, memo function should not call other signal setters, should be pure
return fibonacci(count());
});
Run Code Online (Sandbox Code Playgroud)
如果您的用例需要检索值并调用设置器,那么这就是createEffect用途。
| 归档时间: |
|
| 查看次数: |
1570 次 |
| 最近记录: |