J'essaie de séparer un code commun à de nombreux appels dans mes mutations Vuex. J'ai l'impression que cela est découragé mais je ne comprends pas pourquoi.
Jetez un œil à l'image d'un exemple de code ci-dessous:
J'ai ajouté cette entrée "helpers" dans Vuex - cela n'existe évidemment pas, mais comment puis-je appeler la fonction d'assistance partagée "getColumn" à partir de mutations et/ou d'actions?
Ou dois-je recourir à l'appel d'une méthode statique sur une classe 'VuexHelper'? :(
Quelque chose comme:
Remarque J'ai déjà examiné les éléments suivants:
Merci
Je ne vois pas pourquoi vous voudrez peut-être mettre la fonction d'assistance dans le magasin. Vous pouvez simplement utiliser une fonction simple.
function getColumn(state, colName) {
// Do your thing.
}
const vstore = new Vuex.Store({
// ....
mutations: {
removeColumn(state, colName) {
var column = getColumns(state, colName);
}
}
};
En revanche, si vous en avez vraiment besoin, vous pouvez accéder au module brut et à tout ce qui est inclus:
var column = this._modules.root._rawModule.helpers.getColumns(state, colName);
Bien que cette syntaxe ne soit pas documentée et puisse changer pour les versions ultérieures.
Vous voudrez peut-être implémenter getColumn en tant que fonction getter sur votre magasin VueX. Par exemple:
getters: {
getColumn: state => colName => {
... return column;
}
}
Maintenant, getColumn peut être utilisé dans le magasin comme suit:
let x = getters.getColumn('colNameString');