跳到主要内容

useLoading

useLoading 是一个自定义的 React Hook,用于处理 API 或 Promise 的加载状态。它返回一个由两个值组成的元组,一个是 response 对象,另一个是 action 对象。response 对象包含请求返回的加载状态和数据,而 action 对象包含一个函数,它包装请求并处理加载状态。

安装

要使用 useLoading,您需要在 React 项目中将其安装为依赖项。您可以通过 npmyarn 完成此操作。

npm install microhook
yarn add microhook

导入

在 React 组件文件中从包中导入 useLoading

import { useLoading } from 'microhook';

使用

useLoading 接受一个函数作为参数,该函数是要执行的 API 或 Promise。它返回一个包含 response 对象和 action 对象的元组。

const [response, { wrapRequset }] = useLoading(apiCall);

Response 对象

response 对象包含两个属性:

  • loading(布尔值)- 表示当前请求是否正在加载。

  • data(任意类型)- API 返回的数据。默认为 null。

Action 对象

action 对象包含一个属性:

  • wrapRequest(函数)- 一个函数,用于包装 API 调用并处理加载状态。它接受 API 调用所需的任意数量的参数。
const fetchData = async (param1, param2) => {
// Your API logic
}

const [response, { wrapRequest }] = useLoading(fetchData);

wrapRequest(param1, param2);

示例

以下是在 React 组件中使用 useLoading 的示例。

import React from 'react';
import { useLoading } from 'microhook';
import { getProducts } from './api/products';

const Products = () => {
const [response, { wrapRequest }] = useLoading(getProducts);

const handleClick = () => {
wrapRequest();
}

return (
<div>
<button onClick={handleClick}>Get Products</button>
{response.loading && <p>Loading...</p>}
{response.data && (
<ul>
{response.data.map((product) => (
<li key={product.id}>{product.name}</li>
))}
</ul>
)}
</div>
);
};

export default Products;

在此示例中,getProducts 函数作为参数传递给了 useLoading。当单击“获取产品”按钮时,将调用 wrapRequest 函数,该函数执行 getProducts 函数并处理加载状态。在 API 调用完成之前,加载状态将显示在页面上。完成后,返回的数据将显示为列表。

结论

useLoading 是一个方便的自定义 React hook,可处理 API 或 Promise 的加载状态。它易于使用,并可集成到任何 React 项目中。