Vue3 + TS encapsula funciones de diccionario global

En Vue3, podemos implementar variables globales a través de providey inject, pero para los diccionarios globales, necesitamos un paquete más simple y fácil de usar.

El siguiente es un ejemplo de encapsulación de funciones de diccionario global basado en Vue3 y TypeScript:

interface Dictionary {
    
    
  [key: string]: string | number
}

const dictionary: Dictionary = {
    
    
  gender: {
    
    
    0: '女',
    1: '男',
    2: '保密'
  }
  // 其他字典项
}

export default function useDictionary() {
    
    
  return {
    
    
    getDictionary(key: string, value: string | number): string {
    
    
      const dict = dictionary[key]
      if (!dict) {
    
    
        return ''
      }
      return dict[value] || ''
    },
    setDictionary(key: string, dict: Dictionary): void {
    
    
      dictionary[key] = dict
    },
    deleteDictionary(key: string): void {
    
    
      delete dictionary[key]
    }
  }
}

En el código anterior, definimos una Dictionaryinterfaz para almacenar cada elemento del diccionario, y se pueden agregar o modificar elementos específicos del diccionario según las necesidades reales. En useDictionaryla función, devolvemos tres métodos: getDictionaryse usa para obtener el valor del elemento del diccionario, setDictionaryse usa para configurar el elemento del diccionario y deleteDictionaryse usa para eliminar el elemento del diccionario.

Cuando usamos el paquete de funciones de diccionario global, solo necesitamos setupusarlo en la función Vue3 providepara la inyección global y luego usarlo en el componente que necesita usar el elemento del diccionario injectpara obtenerlo.

Los ejemplos son los siguientes:

import {
    
     defineComponent, provide, inject } from 'vue'
import useDictionary from '@/utils/dictionary'

export default defineComponent({
    
    
  setup() {
    
    
    const dictionary = useDictionary()
    provide('dictionary', dictionary)

    return {
    
    
      // setup函数返回值
    }
  },
  methods: {
    
    
    getGenderLabel(gender: number): string {
    
    
      const dictionary = inject('dictionary')
      return dictionary.getDictionary('gender', gender)
    }
    // 其他方法
  }
})

En el código anterior, inyectamos setupla providefunción de diccionario global en Vue3 en la función del componente, y luego la usamos en el método del componente injectpara obtener la función del diccionario y llamamos getDictionaryal método para obtener el valor del elemento del diccionario.

A través de la encapsulación anterior, podemos acceder fácilmente al diccionario global en Vue3, mejorando la legibilidad y mantenibilidad del código.

Supongo que te gusta

Origin blog.csdn.net/qq_27244301/article/details/131454299
Recomendado
Clasificación