【发布时间】:2019-11-06 23:51:43
【问题描述】:
我是 vuex 的新手,我正在尝试将对象存储到一个名为 orders 的数组中,该数组位于 store.js 文件中。
我尝试通过单击触发方法(triggerFunction)的按钮将对象(例如 me.title)中的值存储到存储文件中的数组中,但我遇到了两个问题:
1 - 在控制台日志中,我观察到唯一更新的变量是 state.order.title,其他变量保持未定义(例如 orders.calories)
2 - 此外,state.orders 数组是空的,并且没有值被推入 state.orders,正如在突变中编程的那样。
app.vue
<template>
<p class="genric-btn primary circle text-uppercase" v-on:click="triggerFunction(me.title,me.description,me.price,me.calories)">add to cart</p>
</template>
<script>
export default {
data () {
return {
me:{
title:"Hamburger",
description:"Something here",
price:"25",
calories:"10"
},
}
},
methods:{
triggerFunction: function(title,description,price,calories){
this.$store.dispatch('triggerFunction',title,description,price,calories)
},
}
</script>
store.js
import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex);
export const store = new Vuex.Store({
state:{
order:{title:'',description:'',price:0,calories:0,qty:0},
orders:[],
},
mutations:{
triggerFunction: (state,title,description,price,calories) => {
state.order.title = title,
state.order.description = description,
state.order.price = price,
state.order.calories = calories
state.order.qty = 1
state.orders.push(state.order)
console.log(state.order)
console.log(state.orders)
},
},
actions:{
triggerFunction: (context,title,description,price,calories) => {
context.commit('triggerFunction',title,description,price,calories)
}
},
})
【问题讨论】:
-
突变只有两个参数,第一个是状态,第二个是有效载荷。您可以使用对象而不是多个参数,例如:
context.commit('triggerFunction', {title, description, price, calories})
标签: javascript arrays vue.js vuex