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>
相关推荐
Lhuu(重开版1 分钟前
JS:正则表达式和作用域
开发语言·javascript·正则表达式
荔枝一杯酸牛奶1 小时前
HTML 表单与表格布局实战:两个经典作业案例详解
前端·html
Charlie_lll1 小时前
学习Three.js–纹理贴图(Texture)
前端·three.js
yuguo.im2 小时前
我开源了一个 GrapesJS 插件
前端·javascript·开源·grapesjs
安且惜2 小时前
带弹窗的页面--以表格形式展示
前端·javascript·vue.js
摘星编程3 小时前
用React Native开发OpenHarmony应用:NFC读取标签数据
javascript·react native·react.js
GISer_Jing3 小时前
AI驱动营销:业务技术栈实战(From AIGC,待总结)
前端·人工智能·aigc·reactjs
GIS之路5 小时前
GDAL 实现影像裁剪
前端·python·arcgis·信息可视化
AGMTI5 小时前
webSock动态注册消息回调函数功能实现
开发语言·前端·javascript
Sapphire~5 小时前
Vue3-15 html标签和组件上的ref属性 + 接口泛型
vue3