Solid JS 是否有与 React.useCallback 等效的功能?

abc*_*abc 3 solid-js

Solid 有createMemo,我认为它可能有用,但它说“备忘录函数不应通过调用设置器来更改其他信号(它应该是“纯”)。”,这不适合我的用例。

Cal*_*lor 8

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用途。