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>
相关推荐
weixin_4367778710 小时前
el-select的label没有没有反显怎么办?
开发语言·前端·javascript
米丘10 小时前
vue3.x 编译 script setup 编译过程
vue.js·node.js·babel
暗不需求10 小时前
React项目架构深度解析:从0到1理解现代前端工程化
前端·javascript·react.js
Lkstar10 小时前
读懂 Vue3 响应式源码:从枚举到 Proxy 拦截器
vue.js
孙凯亮10 小时前
Electron 项目终极实战总结:从黑屏踩坑到自动更新全流程
前端·electron
jiayong2310 小时前
第 40 课:任务详情抽屉里的编辑 / 删除联动强化
java·开发语言·前端·javascript·vue.js·学习
胡志辉10 小时前
前端反调试:常见套路、识别方法与绕过思路
前端·安全
Mr.mjw10 小时前
vue中使用 postcss-px-to-viewport 插件实现多屏适配
javascript·vue.js·postcss
踩着两条虫10 小时前
VTJ: 区块管理功能
vue.js·低代码·ai编程
l1t10 小时前
DeepSeek v4辅助编写调用Python包对用户数据做统计分析的页面
开发语言·javascript·python