Files
kiss-translator/src/hooks/Storage.js

36 lines
744 B
JavaScript
Raw Normal View History

2023-08-30 18:05:37 +08:00
import { useCallback, useEffect, useState } from "react";
import { storage } from "../libs/storage";
export function useStorage(key, defaultVal = null) {
const [data, setData] = useState(defaultVal);
const save = useCallback(
async (val) => {
setData(val);
await storage.setObj(key, val);
},
[key]
);
const update = useCallback(
async (obj) => {
setData((pre) => ({ ...pre, ...obj }));
await storage.putObj(key, obj);
},
[key]
);
const remove = useCallback(async () => {
setData(null);
await storage.del(key);
}, [key]);
2023-07-20 13:45:41 +08:00
useEffect(() => {
(async () => {
2023-08-30 18:05:37 +08:00
setData(await storage.getObj(key));
2023-07-20 13:45:41 +08:00
})();
2023-08-30 18:05:37 +08:00
}, [key]);
2023-07-20 13:45:41 +08:00
2023-08-30 18:05:37 +08:00
return { data, save, update, remove };
2023-07-20 13:45:41 +08:00
}