A Nuxt.js module that injects a $state helper for performing core
data mutations on the Vuex store.
Works with Nuxt.js 2.5 and above.
$state[.submodule].merge:
merges object into state, overriding existing values
this.$state.merge({
propInState: {
toBeUpdated: 2
}
})
$state[.submodule].anull:
set properties in the state to null
// Set single prop to null
this.$state.anull('prop')
// Set top-level props to null
this.$state.anull('prop', 'otherProp', ...)
// Set obj props to null
this.$state.anull({ obj: ['prop', 'otherProp', ...] })
$state[.submodule].push:
push values into state arrays
this.$state.push({
arrayInState: {
toReceiveItems1: [2, 3] // push(2, 3)
toReceiveItems2: ['a', 'b'] // push('a', 'b')
}
})
$state[.submodule].splice:
perform Array.splice() on state arrays
this.$state.splice({
arrayInState: {
toHaveSplicedItems: [0, 2] // splice args
}
})
$state[.submodule].empty:
remove all items from arrays
this.$state.empty('arrayInState', 'anotherArrayInState', ...)
this.$state.empty({ obj: ['arrayInObj', 'anotherArrayInObj'] })yarn add unholyAdd to the modules section of your nuxt.config.js:
export default {
modules: ['unholy']
}The latest version of unholy is a major release: 1.0.0.
The 0.9 release (which overrides Vuex.Store.commit()) for merging objects
remains available on npm.
Upgrading to 1.0 is strongly recommended.
Because somewhere in the source code, you'll find this:
const vueAppPath = require.resolve('@nuxt/vue-app')
const vueAppDistSuffixLen = p('/dist/vue-app.js').length
const vueAppStoreBase = vueAppPath.slice(0, vueAppPath.length - vueAppDistSuffixLen)
const createStoreRegex = /\/\/ createStore[\0-\uFFFF]+?\}\n/Which is used for tampering with the original @nuxt/vue-app store 😈