清理对象中的空值
export const isFalsy = value => value === 0 ? false : !value
export const cleanObject = object => {
const result = { ...object }
Object.keys(result).forEach(key => {
const value = result[key]
if (isFalsy(value)) {
delete result[key]
}
})
return result
}
快捷生成 get 请求
import * as qs from "qs";
fetch(`${apiUrl}/projects?${qs.stringify(cleanObject(param))}`).then(
async (response) => {
if (response.ok) {
setList(await response.json());
}
}
);
debounce
const debounce = (func, delay) => {
let timeout;
return (...param) => {
if (timeout) {
clearTimeout(timeout);
}
timeout = setTimeout(function () {
func(...param);
}, delay);
};
};
Customer Hook
里面用到别的 hook,适合使用 自定义 hook
export const useDebounce = (value, delay) => {
const [debouncedValue, setDebouncedValue] = useState(value);
useEffect(() => {
const timeout = setTimeout(() => setDebouncedValue(value), delay);
return () => clearTimeout(timeout);
}, [value, delay]);
return debouncedValue;
};