From 0ed6fc6bd8faf95070faef4e62913649a6e15f8a Mon Sep 17 00:00:00 2001 From: lecepin <383810086@qq.com> Date: Tue, 7 Nov 2023 19:51:00 +0800 Subject: [PATCH] docs: --- npm-lib/ahooks/README.md | 87 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 87 insertions(+) create mode 100644 npm-lib/ahooks/README.md diff --git a/npm-lib/ahooks/README.md b/npm-lib/ahooks/README.md new file mode 100644 index 0000000..3ea5fb6 --- /dev/null +++ b/npm-lib/ahooks/README.md @@ -0,0 +1,87 @@ +- 项目仓库: https://github.com/alibaba/hooks + +它是由阿里开源的 react hooks 库,前身是 umi-hooks。 + +目前 github star 12.7k,react hooks 库排名也在前列。 + +#### React Hooks + +- React Hooks 是 react v16.8 的一个新特性,与 function components 关联使用。 +- React class component 现在用的人应该很少了,react 官方也不推荐使用了。 + +hooks 的方式带来的明显的优势之一就是逻辑复用,它可以极大的提高开发效率。以前的 Class Component 中以 render Props 和 HOC 的方式进行复用,很繁琐,不灵活。 + +现在有了 hook 模式,就可以将需要复用的逻辑与 React 的几个基本 hooks api 结合起来,创建 useXXX ,这样 use 开头的自定义 hook。 + +小例子: + +```jsx +import React, { useState } from "react"; + +const myPromiseTest = () => + new Promise((res, rej) => { + setTimeout(() => { + res("lalala"); + }, 1000); + }); + +export default function App() { + // const [loading, setLoading] = useState(false); + // const [data, setData] = useState(''); + const { loading, data, run } = usePromise(myPromiseTest); + + return ( +
+ {data} + {loading &&
loading...
} + +
+ ); +} + +const usePromise = (promiseFn) => { + const [loading, setLoading] = useState(false); + const [data, setData] = useState(""); + const run = () => { + setLoading(true); + promiseFn() + .then((res) => { + setData(res); + }) + .finally(() => { + setLoading(false); + }); + }; + + return { loading, data, run }; +}; +``` + +#### ahooks + +ahooks 就是将我们日常开发中常用的一些功能进行了封装,可以简单类比为 lodash 的 hooks 化。 + +当然 ahooks 提供的场景很多。目前有: + +- useRequest +- Scene +- LifeCycle +- ​State +- ​Effect +- ​Dom +- ​Advanced +- ​Dev