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>
相关推荐
桂月二二20 分钟前
基于模块联邦的微前端架构:重构大型前端应用的模块化边界
前端·重构·架构
jay丿41 分钟前
Django简介
javascript
前端没钱1 小时前
日报列表滚动到哪里、哪里就自动变成已读状态
前端·vue.js
想尝一尝被打赏的味道1 小时前
uniapp在app下使用mqtt协议!!!支持vue3
javascript·vue.js·uni-app
lc_front_developer1 小时前
为什么使用Knex 做为 Express 中操作 MySQL 数据库的方案?
前端·node.js
cc.ChenLy1 小时前
vue框架后遗症∶被遗忘的dom操作
javascript·vue.js
Python私教2 小时前
Flutter 实现抖音风格底部导航栏
android·开发语言·javascript
❆VE❆2 小时前
vue3: directive自定义指令防止重复点击
前端·javascript·vue.js·自定义指令·directive
布兰妮甜2 小时前
Fetch API 与 XMLHttpRequest:深入剖析异步请求的利器
前端·javascript·xmlhttprequest·fetch api