vue3的组合式函数的作用是封装和复用响应式状态的函数。只能在setup 标签的script标签汇总或者setup函数中使用。
普通的函数只能调用一次,但是组合式函数接受到响应式参数,当该值发生变化时,也会触发相关函数的重新加载。
如下
 定义了一个,获取用户详情的组合式函数,封装到单独的js中,
import { ref, toValue, watchEffect } from 'vue'
 export function getUserInfo(url) {
    const data = ref(null)
    const error = ref(null)
    watchEffect(async () => {
        data.value = null
        error.value = null
        try {
            const res = await fetch(toValue(url))
            data.value = await res.json()
        } catch (e) { 
            error.value = e
        }
    })
    return {data,error}
}

函数返回2个响应式参数,data和error。
 然后再Demo组件中引入该脚本,并将data和error渲染到页面上,
 当url发生变化时,函数又重新被调用了。
<script setup lang="ts">
    import { ref ,computed} from 'vue'
import {getUserInfo} from '../pulic/fetch.user.js'
    
    //const url=ref("http://localhost:3000/user/info/query?id=1")
    const baseUrl = 'http://localhost:3000/user/info/query?id='
    const id = ref(1)
    const url = computed(() => baseUrl + id.value)
    const {data,error} = getUserInfo(url)
</script>
<template>
  <div>
    Load post id:
  <button v-for="i in 5" @click="id = i" :key="i">{{ i }}</button>
    <h1>{{ data }}</h1>
    <h1>{{ error }}</h1>
  </div>
</template>
点击1按钮
 
 点击2按钮
 
https://cn.vuejs.org/guide/reusability/composables.html









![[flask]请求全局钩子](https://img-blog.csdnimg.cn/direct/f4b46ae8e5d344a78629c62b55816f49.png)








