Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

185
Vistas
Usando variables globales dentro de la tienda Vuex

Inyecté variables globales personalizadas en vue. Puedes ver el código a continuación.

 export default function (props, inject) { inject('models', { register(name) { const model = require(`@/models/${name}.js`) model.default(props, inject) } }) }

esto funciona y no tengo problemas para usarlo, el único problema es al cargarlos en la tienda vuex. Estoy usando Nuxt.js donde la tienda es un poco diferente a vue.js, pero casi funciona igual. my products.js en la carpeta de la tienda se ve así:

 export const state = () => ({ products: [], }) export const getters = { get_product: state => async id => { let loadedProduct = state.products.find(p => p.id == id) let isAllreadyLoaded = loadedProduct != null ? loadedProduct : false if(isAllreadyLoaded) { return loadedProduct } else { let fetchedProduct = await this.$products.find(id) return fetchedProduct } } }

Simplemente verifico primero si ya tengo el producto en caché, si es así, quiero devolver ese producto, de lo contrario, quiero buscar un producto. Pero recibo un error en this.$products. El error dijo:

 TypeError: Cannot read properties of undefined (reading '$products').

y así es como estoy accediendo a mi tienda:

 async asyncData({store, params, $products}) { let product = await store.getters['products/get_product'](params.id) return { product } },

Ya intenté usar Vue.prototype.$products en lugar de this.$products en la tienda vuex, pero desafortunadamente esto no ayudó. ¿Alguna solución? Necesito usar una variable global dentro de la tienda vuex

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

En Nuxt funciona diferente, tienes que hacer un complemento y luego inyectarlo allí.

Ver: https://nuxtjs.org/docs/directory-structure/plugins/#inject-in-root--context

about 4 years ago · Juan Pablo Isaza Denunciar

0

Mientras tanto, probé algunas cosas yo mismo. Lo que encontré es quizás algo que podría ayudar a otros con el mismo problema.

En la tienda vuex no puede acceder a las variables inyectadas globales personalizadas, pero puede acceder a la variable de la ventana principal. Lo que descubrí fue que hay una propiedad $nuxtjs insertada en window , por lo que puede acceder a las variables globales de nuxt usando:

 let mycustomvariable = "$products" window.$nuxt[mycustomvariable]
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda