扫码一下
查看教程更方便
这个钩子类似于 usecallback()
,但将为你的回调提供一个 api,以便与 recoil 状态一起工作。这个钩子可以用来构造一个回调,这个回调可以访问 recoil 状态的只读 snapshot,并且能够异步更新当前的 recoil 状态。
使用这种钩子的一些情况:
type callbackinterface = {
snapshot: snapshot,
gotosnapshot: snapshot => void,
set: (recoilstate, (t => t) | t) => void,
reset: (recoilstate) => void,
};
function userecoilcallback(
callback: callbackinterface => (...args) => returnvalue,
deps?: $readonlyarray,
): (...args) => returnvalue
回调接口:
这个例子使用 userecoilcallback()
来懒读取 recoil 状态,而不订阅组件以在状态更改时重新呈现。
import {atom, userecoilcallback} from 'recoil';
const itemsincart = atom({
key: 'itemsincart',
default: 0,
});
function cartinfodebug() {
const logcartitems = userecoilcallback(({snapshot}) => async () => {
const numitemsincart = await snapshot.getpromise(itemsincart);
console.log('购物车中内容:', numitemsincart);
});
return (
);
}