Я пытаюсь позвонить в свой магазин, помещенный в хранилище:
methods: {
...mapActions('Modal', [
'toggleActive',
]),
close: () => {
this.toggleActive();
}
Это приводит к ошибке:
Uncaught TypeError: Cannot read property 'toggleActive' of undefined
Выполнение следующих работ:
close: function() {
this.toggleActive();
}
Как я могу использовать синтаксис функции ES6 с vue/vuex?
Вы используете функции стрелок. Функции Arrow закрываются над this
в контексте, где они определены, вместо того, чтобы устанавливать его, когда они называются function
функций. Например:
// Whatever 'this' means here
var o = {
foo: () => {
// ...is what 'this' means here when 'foo' is called
}
};
Вероятно, вы просто хотите использовать синтаксис метода:
methods: {
// (I'm using a simple method for toggleActive just for clarity; if you're
// transpiling with something that understands rest notation for
// objects, your 'mapActions' thing is probably fine *provided* that
// the functions it creates aren't also arrow functions
toggleActive() {
// ...
},
close() {
ths.toggleActive();
}
};
Обратите внимание, что это зависит от всех обычных this
материала, описанного в этом вопросе ответы.
this
, точно так же, как закрывают другие переменные. (Если вы не видите мой пример сfoo
, нажмите Обновить.)