语法
一、自动请求
1. 基础自动请求
import { useRequest } from "ahooks";
function App() {
const queryData = () => {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve("哈哈");
}, 3000);
});
};
const { data, loading } = useRequest(queryData);
return <div>{loading ? "正在请求中" : data}</div>;
}
export default App;
2. 携带默认参数自动请求
如果我们设置了 options.manual = false
, 则首次调用 service
的参数可以通过 options.defaultParams
来设置。
import { useRequest } from "ahooks";
function App() {
const queryData = (params) => {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve(params);
}, 3000);
});
};
const { data, loading } = useRequest(queryData,{
defaultParams: ["哈哈"]
});
return <div>{loading ? "正在请求中" : data}</div>;
}
export default App;
二、手动请求
如果设置了 options.manual = true
, 则 useRequest
不会默认执行, 需要通过 run
或者 runAsync
来触发执行。
run
与 runAsync
的区别在于:
-
run 是一个普通的同步函数,我们会自动捕获异常,你可以通过 options.onError 来处理异常时的行为
-
runAsync 是一个返回 Promise 的异步函数,如果使用 runAsync 来调用,则意味着你需要自己捕获异常