🏃 起步

react-use-icon
NPM VersionBiome BadgeVersion Badge

@shined/react-use 旨在重塑 React 开发的新编程范式。它通过提供众多高质量、语意化的 Hooks 来帮助开发者提高开发效率、养成更好的编程习惯,减少对 useEffectuseState 的直接依赖,同时期望开发者能够逐渐适应「Hooks 优先」的 React 开发(编程)范式。

它本质上是一个对 SSR(服务端渲染)友好全面高度优化的 React Hooks 库,提供了灵活且高效的 Hooks 解决方案,并完全采用 TypeScript 开发,配备了包含丰富示例的交互式文档 🔥。

它主要受到 VueUse 的启发,同时也吸取了 react-useahooks 以及社区内许多其他优秀库的影响。特别感谢开源社区,尤其是上述库的作者们,感谢他们的杰出工作和灵感。

🚀 功能特性

⚡️ 内部优化

  • 性能优化:通过 依赖收集 Dependencies Collection 特性,减少不必要的重渲染。
  • 安全状态:为所有有状态的 Hooks 实现了 安全状态 策略,减少了 bug 和不希望的行为。
  • 函数稳定:默认情况下,Hooks 里的每个导出函数都受益于 稳定化
  • 最新状态:通过内部使用 最新 状态,避免了过期闭包问题。
  • 可暂停状态:使用 可暂停 Pausable 实例可选地控制某些 Hooks 的行为。

📦 安装

使用你喜欢的包管理器进行安装:

npm
yarn
pnpm
bun
npm install @shined/react-use

🎨 使用示例

下面是一个如何使用 useAsyncFn Hook 的例子:

function App() { const { loading, error, run } = useAsyncFn(fetchData) return ( <> <div>{data}</div> <button onClick={run} disabled={loading}>Fetch</button> </> ) }
Loading:
false
Value:
click to fetch

接下来,你可以前往 使用指引 了解如何改进现有代码,或访问 Hooks 列表 查看所有可用的 Hooks。