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
不应调用其他信号 setter ,这是为了让 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());
});
如果您的用例需要检索值和调用 setter ,这就是 useEffect
的用途。
关于solid-js - Solid JS 是否有 React.useCallback 的等价物?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71104273/