VueJS + VUEX - 关于数据传输的问题
VueJS + VUEX - Problems Concerning Data Transfer
我的组件:
<div id="event-picker">
<template v-for="event in $store.state.events">
<a href="#" v-on:click.prevent="$store.dispatch('prepareEventForm', event)">{{ event.artist }}</a>
</template>
</div>
我的商店(突变):
prepareEventForm(state, event) {
state.form.time = event.time
state.form.date = event.date
state.form.event = event.event
state.form.artist = event.artist
state.form.organizer = event.organizer
state.form.location = event.location
state.showForm = true
}
我得到的错误是Cannot read property 'time' of undefined
可能是哪里出了问题?
编辑:
这是我的操作方法:
prepareEventForm({ commit }) {
commit('prepareEventForm')
}
您收到该错误的原因是传递给您的 prepareEventForm
突变的 event
对象是 undefined
。
这是因为当您调用 $store.dispatch('prepareEventForm', event)
时,它会调用您的 prepareEventForm
操作 ,并将 event
作为第二个参数传入。
您需要添加 event
作为您操作的第二个参数,并将其作为第二个参数传递给您的 commit
调用(这就是调用 prepareEventForm
变异):
prepareEventForm({ commit }, event) {
commit('prepareEventForm', event)
}
我的组件:
<div id="event-picker">
<template v-for="event in $store.state.events">
<a href="#" v-on:click.prevent="$store.dispatch('prepareEventForm', event)">{{ event.artist }}</a>
</template>
</div>
我的商店(突变):
prepareEventForm(state, event) {
state.form.time = event.time
state.form.date = event.date
state.form.event = event.event
state.form.artist = event.artist
state.form.organizer = event.organizer
state.form.location = event.location
state.showForm = true
}
我得到的错误是Cannot read property 'time' of undefined
可能是哪里出了问题?
编辑:
这是我的操作方法:
prepareEventForm({ commit }) {
commit('prepareEventForm')
}
您收到该错误的原因是传递给您的 prepareEventForm
突变的 event
对象是 undefined
。
这是因为当您调用 $store.dispatch('prepareEventForm', event)
时,它会调用您的 prepareEventForm
操作 ,并将 event
作为第二个参数传入。
您需要添加 event
作为您操作的第二个参数,并将其作为第二个参数传递给您的 commit
调用(这就是调用 prepareEventForm
变异):
prepareEventForm({ commit }, event) {
commit('prepareEventForm', event)
}