I'm still in the process of learning vue.js and in the middle of a small project to help me learn more about creating a larger scale app using Vuex.
I'm running into an issue where I'm trying to remove a specific item from an array using a button in the app; I can't seem to get the syntax right to do this in Vuex. Here's what I'm working with:
store
const state = {
sets: [{}]
}
export const addSet = function ({ dispatch, state }) {
dispatch('ADD_SET')
}
const mutations = {
ADD_SET (state) {
state.sets.push({})
},
REMOVE_SET (state, set) {
state.sets.$remove(set)
}
}
actions
export const removeSet = function({ dispatch }, set) {
dispatch('REMOVE_SET')
}
getters
export function getSet (state) {
return state.sets
}
app
<div v-for="set in sets">
<span @click="removeSet">x</span>
<Single></Single>
</div>
I have an action set up that will add a blank item to the array that will place a new component in the app when you click an add item
button, just not sure how to add a remove item
button to each component and have that work.
I hope this makes sense!
You'll need to modify your removeSet
function to dispatch the set
object that you want to remove from the store:
export const removeSet = function({ dispatch }, set) {
dispatch('REMOVE_SET', set)
}
Then in your component, you can invoke the action via the @click
event as you have it, but you'll need to pass the set
object:
<div v-for="set in sets">
<span @click="removeSet(set)">x</span>
<Single></Single>
</div>
Finally, don't forget to register your getters
and actions
in your component:
vuex: {
getters: {
getSet
},
actions: {
addSet, removeSet
}
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With