实现 Store
虽然库带有一些内置的 Store,但您可以使用 <RecoilSync>
来实现自己的 Store。指定一个可选的 storeKey
来标识和匹配哪些原子应该与哪个 Store 同步。然后,指定以下可选回调来定义 Store 的行为
有关回调的完整详细信息,请参阅 <RecoilSync>
API 参考。
使用 React Props 同步的示例
一个使用 <RecoilSync>
的示例 Store,它将根据 React 属性值初始化原子
function InitFromProps({children, ...props}) {
return (
<RecoilSync
storeKey="init-from-props"
read={itemKey => props[itemKey]}
>
{children}
</RecoilSync>
);
}
使用用户数据库同步的示例
一个使用 <RecoilSync>
的示例 Store,它将与自定义数据库同步
function SyncWithDB({children}) {
const connection = useMyDB();
return (
<RecoilSync
storeKey="my-db"
read={itemKey => connection.get(itemKey)}
write={({diff}) => {
for (const [key, value] of diff) {
connection.set(key, value);
}
}}
listen={({updateItem}) => {
const subscription = connection.subscribe((key, value) => {
updateItem(key, value);
});
return () => subscription.release();
}}
>
{children}
</RecoilSync>
);
}