Understanding State Management with Vuex: Vue’s Own State Management Pattern and Library

Nowadays client-side applications have been scaling up enormously within new technologies and frameworks. But managing and minimizing the complexity of large applications are not so easy as we might think. In order to minimize the complexity of these applications, most developers apply component design patterns to them. You can think it as splitting pieces of components as much as you can to control every component easily and building your application from pieces to generating blocks. That seems a good strategy but how about common data that these pieces use? This is where state management comes in.

What is State Management?

Let’s start with the term State: State is the data that your component used and rendered. Things like blog posts, to-do items, and so on. As we mentioned above; Because multiple pieces of data scattered across many components and the interactions between them, large applications grow and construct in complexity.

State Management is the most efficient way to solve this problem if your application is considerably large. In this article, we will examine the State Management of the Vue Framework. Vue offers Vuex: Vue’s Own State Management Pattern and Library.


Without Vuex; as your app grows, each component might have its own version of the state. Components can change the state in specific actions, but to get the correct state in every situation in every component: these components should communicate for each change that affects the state. There’s the traditional way of communicating events up and passing props down to share data, but that can become overly complicated when you have many components in your application.


Instead of doing this, we can consolidate all of our State into one place that contains the current state of our entire application-one single global state.

Global State

This is what Vuex provides, and every component has direct access to this global State.

As we know Vue is a reactive framework. The same reactivity operates on Vuex too. When components update the State, other components that are using the same State get effected from that change. So when we change global State from any component in our project, other components that are using the same State automatically receives the new State.


Unfortunately, just consolidating components commonly used data into the global State doesn’t fully solve the problem. Suppose that many components try to update State in different ways and from different locations, it will cause collusion for this system. So we need some standardization. Otherwise, changes to our state couldn’t be predictable or traceable.

A State Management Pattern

Solution for the problem above, Vuex provides a full state management pattern for a simple and standardized way to make state changes.

const store = new Vuex.Store({
state: {
mutation: {
actions: {
getters: {

If you are familiar with Vue, this pattern looks quite similar to you. As Vue created a root instance with new Vue. Vuex generates a store as new Vuex.Store.

Let’s explain each term without going into much deeper. State responsible for storing data and it is reactive like Vue instance’s data property. Actions are methods for updating State. As Vue instance has computed properties; Store has Getters, which allow us to access filtered, derived, or computed state. Additionally, We have Mutations that we can track the state changes with. Actions will be used to commit Mutations. Vue provides a super simple solution for managing state with Vuex. I highly recommend you to see Vuex’s features in more depth.

As a conclusion, for minimizing the complexity of your large client-side applications we should manage our State. State Management libraries or patterns are good solutions for tracking and synchronously updating your global data that most of your components use. Hopefully, you understand why you might need State Management and how it can help enhance your application.

By Ege Aytın


There are no comments yet.

Leave a comment