2017-06-09 4 views
1

ich eine Komponente zu einem dynamischen Element manuell bin Montage:in einer manuell montierten vue-Komponente verwenden vuex

import Vue from 'vue'; 
import MyComponent from 'MyComponent.vue'; 

const MyComponentConstructor = Vue.extend(MyComponent); 
const MyComponent = new MyComponentConstructor({ 
    propsData: { 
     foo: 123, 
    }, 
}).$mount('#mount-point'); 

Wenn ich eine Komponente auf diese Weise manuell montieren, kann ich nicht verwenden vuex innen MyComponent.vue.

// (inside MyComponent.vue) 
this.$store.commit('setSomething', true); 

ich dieses:

Uncaught TypeError: Cannot read property 'commit' of undefined

Natürlich ist vuex eingerichtet und funktioniert gut in den anderen normalen Komponenten. Kann ich etwas an den Konstruktor weitergeben, damit es funktioniert?

Antwort

2

Übergeben Sie den Speicher als Teil der Optionen an den Konstruktor.

import store from "path/to/store" 

const MyComponent = new MyComponentConstructor({ 
    store, 
    propsData: { 
     foo: 123, 
    }, 
}).$mount('#mount-point'); 
+0

Wow, einfach so! Vielen Dank! Es sieht so aus, als könnte ich auch 'store: this. $ Store' von der übergeordneten Komponente übergeben, so dass ich nicht einmal den Laden importieren muss! – DMack