Думайте о Vuex как о глобальном компоненте без шаблона или пользовательского интерфейса; только тот, который делает его данные доступными для всех других компонентов. Хранилище Vuex предоставляет компонентам возможность совместно использовать «компоненты» (данные и поведение), помещая их в одно место.
Это особенно полезно, когда требуется, чтобы несколько несвязанных компонентов имели данные, которые не указаны c любому из них. Например, вошли в систему имя пользователя. Было бы неплохо иметь это в одном месте, вместо того, чтобы дублировать его и пытаться передать его каждому компоненту, который его отображает или что-то делает с ним. Все они могут go напрямую в хранилище и получить его.
В любое время вам нужно обмениваться данными между компонентами, которые не имеют отношения родитель / потомок и не могут emit
события или передавать реквизиты друг к другу, у вас, вероятно, есть глобальные данные. Может быть, компоненты находятся на разных маршрутах или в разных разделах и т. Д. c. С Vuex все они могут получать доступ к глобальной информации и методам из одного источника.
С учетом этого сравнения «компонент» Vuex становится легким для понимания, но с другими именами:
state
это просто data
getters
это просто computed
actions
это просто methods
Это действительно все, концептуально. Основное отличие состоит в том, что в Vuex вы не меняете state
вне mutations
.
Так же, как у вас может быть несколько data
элементов или methods
в компоненте, вы можете иметь несколько state
предметов или actions
в магазине, и это ожидается. Если вы хотите разделить магазин и выделить определенные части для определенных целей или функций для более простого управления, вы можете сделать это также с помощью Vuex modules , но все это по-прежнему глобально.