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>
相关推荐
计算机毕设VX:Fegn089510 分钟前
计算机毕业设计|基于springboot + vue汽车销售系统(源码+数据库+文档)
数据库·vue.js·spring boot·后端·汽车·课程设计
仅此,11 分钟前
前端接收了id字段,发送给后端就变了
java·前端·javascript·spring·typescript
Lovely Ruby13 分钟前
[前端] 封装一下 echart 6,发布到 npm
前端·npm·node.js
BD_Marathon14 分钟前
NPM_常见命令
前端·npm·node.js
樱桃园园长16 分钟前
【Three.js 实战】手势控制 3D 奢华圣诞树 —— 从粒子系统到交互实现
javascript·3d·交互
绿鸳18 分钟前
12.17面试题
前端
二狗哈23 分钟前
Cesium快速入门30:CMZL动画
javascript·3d·webgl·cesium·地图可视化
Huanzhi_Lin31 分钟前
禁用谷歌/google/chrome浏览器更新
前端·chrome
咸鱼加辣35 分钟前
【前端的crud】DOM 就是前端里的“数据库”
前端·数据库
kong790692838 分钟前
环境搭建-运行前端工程(Nginx)
前端·nginx·前端工程