L'accès des getters dans Vuex mutations

Dans un Vuex magasin de mutation, est-il possible d'accéder à un getter? Considérons l'exemple ci-dessous.

new Vuex.Store({
    state: {
        question: 'Is it possible to access getters within a Vuex mutation?'
    },
    mutations: {
        askQuestion(state) {
            //TODO: Get question from getter here
            let question = '';

            if (question) {
                //...
            }
        }
    },
    getters: {
        getQuestion: (state) => {
            return state.question;
        }
    }
});

Bien sûr, l'exemple n'a pas beaucoup de sens, parce que je pouvais accéder à l' question propriété directement sur le state objet au sein de la mutation, mais j'espère que vous voyez ce que je suis en train de faire. C'est, à condition que la manipulation de l'état.

Au sein de la mutation, this est undefined et la state paramètre permet d'accéder à la state objet, et pas le reste de la boutique.

La documentation sur les mutations ne mentionne rien à ce sujet.

J'imagine que ce n'est pas possible, à moins que j'ai raté quelque chose? Je suppose que l'alternative serait d'effectuer cette logique de l'extérieur du magasin (résultant de la duplication de code) ou la mise en œuvre d'une action qui fait cela, parce que les actions ont accès à l'ensemble de la boutique contexte. Je suis assez sûr que c'est une meilleure approche, c'est de garder la mutation concentré sur ce qu'est réellement censé faire; la mutation de l'état. C'est probablement ce que je vais faire, mais je suis juste curieux de savoir si l'accès à un getter dans une mutation est même possible?

Pourriez-vous expliquer pourquoi vous auriez besoin d'accesseurs en mutation? Vous avez raison, votre exemple pourrait aisément se référer à state.question. Et, oui, en toute logique serait de prendre un autre action sur la base de l'état actuel devrait être traitée dans une action.
Vous pouvez accéder à des getters dans des actions, parce que les actions mettre en contexte en tant que premier argument. comme ceci: actions: { action1: (contexte, la charge utile) => { console.journal(le contexte.les méthodes de lecture.getSomething); }}. Pas sûr que vous pouvez le faire dans les mutations même si, comme les mutations de recevoir uniquement des locaux de l'état.
Parce que mon code est plus complexe que cela, et j'ai besoin de vérifier quelque chose. L'exemple concret est l'ajout d'un produit au panier, et je veux vérifier si il est déjà là. Je voulais garder que la logique de la mutation de la garder propre. Je suis sûr que la meilleure approche est d'utiliser une action, mais elle est juste curieux de savoir si il est même possible d'accéder à des getters dans les mutations - pour quelque raison que ce soit.

OriginalL'auteur Andy0708 | 2017-04-06