@woocommerce/data
Version:
WooCommerce Admin data store and utilities
28 lines (27 loc) • 879 B
JavaScript
/**
* External dependencies
*/
import { useEffect, useRef } from '@wordpress/element';
import { useSelect } from '@wordpress/data';
const useInterval = (callback, interval) => {
const savedCallback = useRef();
useEffect(() => {
savedCallback.current = callback;
}, [callback]);
useEffect(() => {
const handler = (...args) => {
if (savedCallback.current) {
savedCallback.current(...args);
}
};
if (interval !== null) {
const id = setInterval(handler, interval);
return () => clearInterval(id);
}
}, [interval]);
};
export const useSelectWithRefresh = (mapSelectToProps, invalidationCallback, interval, dependencies) => {
const result = useSelect(mapSelectToProps, dependencies);
useInterval(invalidationCallback, interval);
return result;
};