useLoading

loading 布尔状态,封装 ahooks 的 useBoolean,导出语义化的 start / end

function useLoading(initValue?: boolean): {
  loading: boolean;
  startLoading: () => void;
  endLoading: () => void;
};
参数类型默认说明
initValuebooleanfalse初始 loading 状态

实现就是把 ahooks 的 useBoolean 换成语义化命名:setTruestartLoadingsetFalseendLoading。没有 toggle——loading 语义下切换是错误操作。

import { useLoading } from '@skyroc/hooks';

const SubmitButton = () => {
  const { endLoading, loading, startLoading } = useLoading();

  async function handleSubmit() {
    startLoading();

    try {
      await submit();
    } finally {
      endLoading();
    }
  }

  return (
    <button
      disabled={loading}
      type="button"
      onClick={handleSubmit}
    >
      {loading ? '提交中…' : '提交'}
    </button>
  );
};

endLoadingfinally,异常路径也要复位。

useCaptcha 内部就用它管理发送请求期间的按钮状态。

Last updated on