2016-08-01 3 views
2

Я работаю над довольно крупным проектом, и хочу разбить модули Vuex на максимально возможное количество частей. Например, я хочу отделить функциональность API от UI, сохраняя данные, поступающие с сервера, изолированного от флагов компонента и так далее.Гранулярная организация с Vuex

В документации (http://vuex.vuejs.org/en/structure.html) авторы предлагают разбить все на modules, что отлично. Проблема возникает, когда у меня есть, скажем, products в качестве страницы и products как данные, и я хочу, чтобы они были разделены.

Можно ли добиться чего-то вроде этого:

{ 
    modules: { 
    api: { 
     products: // ... 
    }, 
    pages: { 
     products: // ... 
    } 
    } 
} 

и быть в состоянии получить доступ к ним, как store.api.products и store.pages.products? Я ошибаюсь?

Спасибо!

ответ

3

Я принимаю взгляд на vuex кода, и я нашел это:

// retrieve nested modules 
const nestedMutations = this._createModuleMutations(module.modules, newNestedKeys) 

Оказывается, что вы можете сделать ваши vuex модули зернистые, выполнив:

{ 
    modules: { 
    api: { 
     modules: { 
     products: /* ... */ 
     } 
    }, 
    components: { 
     modules: { 
     page: /* ... */ 
     } 
    } 
    } 
} 

И это приведет к государственной структуре, как:

Vuex State screenshot

+0

Здесь обсуждается тема: http://forum.vuejs.org/topic/4791/granular-organisation-with-vuex –