Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

1.7K
Visualizações
¿Cómo usar Vue.prototype o variable global en Vue 3?

Al igual que el título, quiero agregar Axios al prototipo de Vue. Entonces, cuando quiero usarlo, puedo usarlo así this.$axios en lugar de importarlo cada vez.

CÓDIGO:

 //plugins/axios.ts import axios from 'axios' import router from '../router/index' const errorHandle = (): void => {}; const instance = axios.create({ // baseURL: process.env.NODE_ENV == 'development' ? '' : '' baseURL: 'http://localhost:3000', timeout: 1000 * 12 }); instance.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded;charset=UTF-8' export default instance
 import { createApp } from 'vue' import App from './App.vue' import installElementPlus from './plugins/element' import instance from './plugins/axios' import router from './router' const app = createApp(App).use(router) installElementPlus(app) // app.config.globalProperties.http = instance app.config.globalProperties.$axios= instance app.mount('#app')

Sin embargo, hay un problema cuando trato de usarlo así: this.$axios .

 TS2339: Property '$axios' does not exist on type 'ComponentPublicInstance<{}, {}, {}, {}, {}, EmitsOptions, {}, {}, false, ComponentOptionsBase<{}, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, EmitsOptions, string, {}>>'.

¿Cómo podría solucionar este problema?

over 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

Puede usar provide / inject o definir una propiedad de configuración global, que reemplaza a Vue.prototype en Vue 3:

1. provide / inject (para API de Composición u Opciones)

Proveer

 import axios from 'axios'; const app = Vue.createApp(App); app.provide('$axios', axios); // Providing to all components during app creation

Inyectar

API de composición:

 const { inject } = Vue; ... setup() { const $axios = inject('$axios'); // injecting in a component that wants it // $axios.get(...) }

API de opciones:

 inject: ['$axios'], // injecting in a component that wants it

2. Configuración global (para API de opciones)

 import axios from 'axios'; const app = Vue.createApp(App); app.config.globalProperties.$axios = axios;

API de opciones:

 this.$axios

Nota: Esto es solo para la API de opciones. Evan You (creador de Vue) dice : " config.globalProperties está diseñado como una vía de escape para replicar el comportamiento de Vue.prototype . En las funciones de setup , simplemente importe lo que necesita o use explícitamente provide / inject para exponer las propiedades a la aplicación".

over 4 years ago · Santiago Trujillo Relatório

0

Hay una manera de usar globalProperties dentro de una función de configuración. Aunque esto podría considerarse un anti-patrón. Sería mejor usar provide/inject si es posible. Pero si hay una biblioteca que usa globalProperties y realmente necesita acceder a ella desde la configuración, así es como podría hacerlo.

 <script setup> import { getCurrentInstance } from 'vue' const app = getCurrentInstance() const progressBar = app.appContext.config.globalProperties.$Progress progressBar.start() </script>
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda