'Access default state in Pinia

I am trying to migrate from Vuex to Pinia and I couldn't figure out what defaultStateFactory() equivalent is in Pinia.

Here is an mutation from Vuex. I want to convert this to Pinia.

setOperatedAddress(state, payload) {
  if (payload) {
    Object.assign(state.operatedAddress, payload)
  } else {
    Object.assign(state.operatedAddress, defaultStateFactory().operatedAddress)
  }
}

If no address provided I want operated address to fall back to initial empty state.



Solution 1:[1]

You can achieve this simply by defining your state function externally, and use it both in the store definition and inside your actions. Something like this:

const defaultStateFactory = () => {
  return {
    operatedAddress: 'foo'
  }
}

const myStore = defineStore('myStore', {
  state: defaultStateFactory,
  actions: {
    setOperatedAddress(payload) {
      this.operatedAddress = payload ?? defaultStateFactory().operatedAddress
    }
  },
})

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 dr_barto