Solid JS 是否具有 React.useCallback 的等价物?

Does Solid JS have an equivalent of React.useCallback?

Solid 有 createMemo 我认为可能有用,但它说“备忘录功能不应该通过调用 setter 来改变其他信号(它应该是“纯”)。”,这不适合我用例。

Solid 没有 useCallback 因为组件只挂载一次并且不会重新渲染,React 有 useCallback 这样开发人员就有了另一种方法来防止重新渲染。

createMemo的目的是缓存导出的信号,比如retrieving a signal that runs an expensive fibonacci value.

const [count, setCount] = createSignal(0);

const fib = createMemo(() => fibonacci(count()));

如您所述,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());
});

如果您的用例需要检索值和调用设置器,这就是 useEffect 的用途。