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>
相关推荐
weixin1997010801612 分钟前
[特殊字符] RESTful API 接口规范详解:构建高效、可扩展的 Web 服务(附 Python 源码)
前端·python·restful
存在的五月雨16 分钟前
Vue3项目一些语法
前端·javascript·react.js
nashane1 小时前
HarmonyOS 6学习:Web组件同层渲染事件处理与智能长截图实现
前端·学习·harmonyos·harmonyos 5
大家的林语冰1 小时前
Node 2026 发布,JS 三大新功能上线,最后一个奇偶版本
前端·javascript·node.js
三*一1 小时前
Mapbox GL JS 自研面要素整形工具开发实录
开发语言·javascript·arcgis·ecmascript
nashane1 小时前
HarmonyOS 6学习:Web组件同层渲染触摸事件与长截图拼接实战
前端·学习·harmonyos·harmonyos 5
我的世界洛天依1 小时前
胡桃讲编程|续篇!用高数 + JS ES262 硬核解构:求乐正绫的值
javascript
GISer_Jing2 小时前
浏览器 Agent 插件开发规格书 (SPEC)
前端·ai·前端框架·edge浏览器
别叫我->学废了->lol在线等2 小时前
评估总结模块(暂不做)
前端
清灵xmf2 小时前
CC Switch:解决 AI 编程工具配置
前端·人工智能·cc switch