Hooks编程扫盲(一)-- useSWR

一、背景

Vue 3.0已经出到3.0.5了,React Hooks大家也用的如日中天。整天大家都在讨论Hooks,Hooks,那么Hooks式的编程到底有什么好处?

参加本人的这篇文章

二、使用

项目 React Vue
包名 swr vue-swr
仓库地址 github-swr github-vue-swr

二、useSWR

随着React Hooks的浪潮,各种基于Hooks 的方案越来越多,其中主要包含 状态管理、数据请求、通用功能的封装 等等。而 数据请求 是日常业务开发中最常见的需求,那么在 Hooks 模式下,我们应该如何请求数据,先来看下面的一个简单示例。

需求场景

产品需求:首页通过接口获取 github trending 项目列表,然后点击列表项可查看单个项目的信息。

在这里插入图片描述

程序实现:接到需求后一顿操作,无非就是在数据请求时需要显示 loading效果,数据获取完成时展示列表数据,以及考虑请求错误后的容错处理,稳健如飞的撸出了如下代码:

// 首页列表实现
const Home = () => {
   
  // 设置初始数据
  const [data, setData] = useState([]) 
  // 设置初始状态
  const [isLoading, setIsLoading] = useState(false)
  // 设置初始错误值
  const [isError, setIsError] = useState(false)

  useEffect(() => {
   
    // 定义 fetchFn 
    const fetchData = async () => {
   
      setIsLoading(true)
      try {
   
        const result = await fetch('api/data')
        setData(result)
      } catch(error) {
   
        setIsError(true)
      }
      setIsLoading(false)
    }
    // 调用接口
    fetchData()
  }, [])
  
  return (
     <div className='hero'>
        <h1 className='title'>Trending Projects</h1>
        {
   isError && <div>Something went wrong ...</div>}
        <div>
            {
   
              isLoading ? 'loading...' :
              data.map(project =>
                <p key={
   project}><Link href='/[user]/[repo]' as={
   `/${
     project}`}><a>{
   project}</a></Link></p>
              )
            }
        </div>
    </div>
  )
}

获取项目详情实现与上面基本一样,基础代码如下:

// 项目详情实现
const project = () => {
   
  const [data, setData] = useState([]) 
  const [isLoading, setIsLoading] = useState(false)
  const [isError, setIsError] = use
  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值