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

264
Vistas
VueJS: ¿por qué "esto" no está definido?

Estoy creando un componente con Vue.js.

Cuando hago referencia a this en cualquiera de los ganchos del ciclo de vida ( created , mounted , updated , etc.) se evalúa como undefined :

 mounted: () => { console.log(this); // logs "undefined" },

Lo mismo también está sucediendo dentro de mis propiedades calculadas:

 computed: { foo: () => { return this.bar + 1; } }

Obtuve el siguiente error:

TypeError no capturado: no se puede leer la propiedad 'barra' de indefinido

¿Por qué this evaluación es undefined en estos casos?

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Ambos ejemplos usan una función de flecha () => { } , que vincula this a un contexto diferente de la instancia de Vue.

Según la documentación :

No use funciones de flecha en una propiedad de instancia o devolución de llamada (por ejemplo, vm.$watch('a', newVal => this.myMethod()) ). Como las funciones de flecha están vinculadas al contexto principal, this no será la instancia de Vue como cabría esperar y this.myMethod no estará definido.

Para obtener la referencia correcta a this como la instancia de Vue, use una función regular:

 mounted: function () { console.log(this); }

Alternativamente, también puede usar la abreviatura ECMAScript 5 para una función:

 mounted() { console.log(this); }
over 4 years ago · Santiago Trujillo Denunciar

0

Está utilizando funciones de flecha .

La documentación de Vue establece claramente que no se deben usar funciones de flecha en una propiedad o devolución de llamada.

A diferencia de una función normal, una función de flecha no vincula this . En cambio, this está ligado léxicamente (es decir, mantiene this significado de su contexto original).

 var instance = new Vue({ el:'#instance', data:{ valueOfThis:null }, created: ()=>{ console.log(this) } });

Esto registra el siguiente objeto en la consola:

Window {postMessage: ƒ, blur: ƒ, focus: ƒ, close: ƒ, frames: Window, …}

Considerando que... Si usamos una función regular (que deberíamos en una instancia de Vue)

 var instance = new Vue({ el:'#instance', data:{ valueOfThis:null }, created: function(){ console.log(this) } });

Registra el siguiente objeto en la consola:

hn {_uid: 0, _isVue: true, $options: {…}, _renderProxy: hn, _self: hn, …}

over 4 years ago · Santiago Trujillo Denunciar

0

Si desea seguir usando la función de flecha, puede pasar la instancia del componente ( this ) como parámetro como:

 computed: { foo: (vm) => { //vm refers to this return vm.bar + 1; } }
over 4 years ago · Santiago Trujillo 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