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>
相关推荐
小江的记录本几秒前
【Swagger】Swagger系统性知识体系全方位结构化总结
java·前端·后端·python·mysql·spring·docker
csdn_aspnet3 分钟前
如何在 .NET Core WebAPI 和 Javascript 应用程序中安全地发送/接收密钥参数
javascript·.netcore·cryptojs
Moshow郑锴7 分钟前
npm国内镜像加速之使用 nrm 工具(灵活切换,适合多环境)
前端·npm·node.js
flytam9 分钟前
Claude Agent SDK 深度入门指南 审核中
前端·人工智能·aigc
还是大剑师兰特10 分钟前
pnpm format 什么作用
开发语言·javascript·ecmascript
你猜猜吧11 分钟前
里程三:DSL总结
前端
JarvanMo11 分钟前
当 Flutter 撞上 3D 性能之墙 —— Fluorite(萤石)
前端
Eagle_Clark11 分钟前
从0到1 Vibe Coding 一个项目的真实感受
前端·人工智能·后端
CodeSheep12 分钟前
兄弟被降职降薪,被猎头挖新公司时承诺45万年薪,结果签合同才发现这45万里有“部分”是股权激励,还得2年后才能兑现
前端·后端·程序员
weixin1997010801619 分钟前
《界面网商品详情页前端性能优化实战》
前端·性能优化