@bormor

Как передать данные из одного модуля в другой?

Классическая задача - каталог продуктов и корзина товаров.
Нужно из каталога передать элемент в корзину.

Как получить доступ к state из модуля корзины в модуле каталога продуктов?
Использую вариант по умолчанию - с глобальным пространством имен.
Пробовал через state и через rootState - пока не срабатывает.

// ../store/module/products.js
export default {
    state: {
        items: [
            {title: 'Product 1', id: 1},
            {title: 'Product 2', id: 2},
            {title: 'Product 3', id: 3},
            {title: 'Product 4', id: 4},
        ]
    },
    mutations: {
        addProductToCart(state, id, rootState) {
            rootState.cart.cartItems.push({title:'NEW ITEM', id:5})
        }
    },
};


// ../store/module/cart.js
export default {
    state: {
        cartItems: [
            {title: 'Product 1', id: 1},
            {title: 'Product 2', id: 2},
        ]
    }


};


// ../store/index.js

import Vue from 'vue';
import Vuex from 'vuex';
import products from './modules/products';
import cart from './modules/cart';

Vue.use(Vuex);
export default new Vuex.Store({
    modules:{
        products,
        cart
    }
});
  • Вопрос задан
  • 3250 просмотров
Решения вопроса 1
0xD34F
@0xD34F
В products мутацию замените на экшен, который будет вызывать мутацию в cart. А из одного модуля напрямую менять состояние другого - идея так себе, на мой взгляд.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы