telefunc
Version:
Remote functions. Instead of API.
16 lines (15 loc) • 660 B
JavaScript
export { useData };
import { useAsync } from 'react-streaming';
import { assertUsage, isCallable } from './utils.js';
function useData(telefunction, ...args) {
assertUsage(isCallable(telefunction), '`useData(fn)`: argument `fn` should be a function');
const telefunctionKey = telefunction._key;
const fnName = telefunction.name;
assertUsage(telefunctionKey, `The function \`${fnName || 'fn'}\` passed to \`useData(${fnName ? '' : 'fn'})\` isn't a telefunction`);
const asyncFn = () => {
return telefunction(...args);
};
const key = [telefunctionKey, ...args];
const result = useAsync(key, asyncFn);
return result;
}