vue3之组合式函数

抽取成一个组合式函数:

javascript 复制代码
// fetch.js
//接收响应式状态
import { ref, watchEffect, toValue  } from 'vue'
//一个封装的异步请求
import { fetch } from '../XX'
export function useFetch(url) {
	  const data = ref(null)
	  const error = ref(null)
	  const fetchData = () => {
	  	  // 重置data,error 数据
	      data.value = null
	      error.value = null
	      //toValue() 是一个在 3.3 版本中新增的 API。它的设计目的是将 ref 或 getter 规范化为值
		  fetch(toValue(url))
		    .then((res) => res.json())
		    .then((json) => (data.value = json))
		    .catch((err) => (error.value = err))
	  }
	 
	 watchEffect(() => {
	 	//只要fetchData函数中的url变就自动触发watchEffect
	   fetchData()
	 })
  return { data, error }
}

在组件里只需要这样使用:

javascript 复制代码
<script setup>
import { useFetch } from './fetch.js'

// 当 props.id 改变时重新 fetch
const { data, error } = useFetch(() => `/posts/${props.id}`)
</script>
相关推荐
533_20 分钟前
[vxe-table] 合并单元格
前端
浩星28 分钟前
electron系列9:调用原生能力,剪贴板、通知、开机自启
前端·javascript·electron
Mapmost31 分钟前
【Mapmost渲染指北】灯光+后处理,一招切出立体感
前端
J船长32 分钟前
Kotlin 协程:从入门到深度理解
前端
Hilaku1 小时前
做中后台业务,为什么我不建议你用 Tailwind CSS?
前端·css·代码规范
有意义1 小时前
【面试复盘】前端底层原理与 React 核心机制深度梳理
前端·react.js·面试
二十一_1 小时前
LangChain 教程 05|模型配置:AI 的大脑与推理引擎
前端·langchain
kerli1 小时前
Compose 组件:BoxWithConstraints作用及其原理
android·前端
LovroMance1 小时前
消息总线 + 可插拔的消息插件管理系统
前端
Lee川1 小时前
React Router 实战指南:构建现代化前端路由系统
前端·react.js·架构