States in Vuex

Vuex is the state management library for Vue.js.

Vuex makes use of a single object to manage its state. This object contains all our application-level states and serves as a single source of truth.

A look at a state in Vuex Store


const store = new Vuex.Store({
  state: {
    todos: [
      { id: 1, description: 'Buy Educative Course', done: true },
      { id: 2, description: 'Take a nap', done: false }
    ]
  }
})

It is simply an object that takes in values. We can use these values to store data that is to be accessed by our app.

How to access Vuex states in a component

To access our states in our components, we can use various approaches. Here we see how we can get access to our store using this.$store.

const Counter = {
  template: `<div>{{ count }}</div>`,
  computed: {
    count () {
      return this.$store.state.count
    }
  }
}

We would need to provide the store option to the root instance when initializing the Vue project. Calling this.$storewould give all child components access to the store.


const app = new Vue({
  el: '#app',
  store,
  components: { Dashboard }
})

How to use the mapState helper to access states in components

We can also make use of the mapState helper which allows us to get rid of the many $this.store in the computed property.

import { mapState } from 'vuex'

export default {
  computed: {

...mapState({
    
    count: state => state.count,
    loading: state => state.loading,
    isLoggedIn: state => state.isLoggedIn

  })
 }
}

Free Resources