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>
相关推荐
hhcccchh10 分钟前
学习vue第七天 从单页面应用(SPA)进化为后台管理系统架构
vue.js·学习·系统架构
sen_shan29 分钟前
《Vue项目开发实战》第八章:组件封装--vxeGrid
前端·javascript·vue.js
五点六六六30 分钟前
双非同学校招笔记——离开字节入职小📕
前端·面试·程序员
IT_陈寒31 分钟前
Redis实战:5个高频应用场景下的性能优化技巧,让你的QPS提升50%
前端·人工智能·后端
2***574232 分钟前
Vue项目国际化实践
前端·javascript·vue.js
我也爱吃馄饨33 分钟前
写的webpack插件如何适配CommonJs项目和EsModule项目
java·前端·webpack
全马必破三34 分钟前
HTML常考知识点
前端·html
3秒一个大44 分钟前
JavaScript 作用域:从执行机制到块级作用域的演进
javascript
OLong1 小时前
忘掉"发请求",声明你要的数据:TanStack Query 带来的思维革命
前端
琦遇1 小时前
Vue3使用vuedraggable实现拖拽排序
前端