老师你好,ref可以接受泛型,但是使用reactive的时候如何使用泛型去改造呢

来源:3-14 模块化结合typescript - 泛型改造

宝慕林n号机

2020-11-05

以下是我的代码,比较迷茫的是传入的T不知道该放在哪

import { reactive, toRefs } from 'vue'
import axios from 'axios'

function useUrlLoader<T>(url: string) {
  const result = null
  const loading = true
  const loaded = false
  const error = null
  const data = reactive({
    result,
    loading,
    loaded,
    error
  })
  axios.get(url).then((rawData) => {
    data.loading = false
    data.loaded = true
    data.result = rawData.data
  }).catch((e) => {
    data.error = e
    data.loading = false
  })
  const refData = toRefs(data)
  return {
   ...refData
  }
}

export default useUrlLoader
写回答

1回答

张轩

2020-11-06

同学你好 reactive 本身是可以传入泛型的 你应该在那里传入,或者可以直接指定data 的类型 举个例子

interface DataProps<P> {
    result: P | null;
    loading: boolean;
    ...
}
const data: DataProps<T> = reactive({
    result: null,
    loading: false
})
const data = reactive<DataProps<T>>({
    result: null,
    loading: false
})


2
1
宝慕林n号机
非常感谢!
2020-11-11
共1条回复

Vue3 + TS 仿知乎专栏企业级项目

带你完成前后端分离复杂项目,率先掌握 vue3 造轮子技能

3142 学习 · 2313 问题

查看课程