react精进:每天一个hook--------异步effect

43 阅读1分钟

/**
 * 异步hooks
 * effect: 返回Promise的异步函数
 * deps: 可选依赖项,用于决定合适重新执行effect
 * 示例:
 * useAsyncEffect(async () => {
 *   const data = await getData();
 *   setData(data);
 * }, [id]);
 */
import React, { useEffect } from "react";
const useAsyncEffect = (effect: () => any, deps?: React.DependencyList) => {
	useEffect(() => {
		(async () => {
			await effect();
		})();
	}, deps);
};

export default useAsyncEffect;