У меня есть массив с именем tour_plan
в моем состоянии.
У меня есть два действия в vuex actions.js
- select_location
- select_tour
В select_location я фиксирую мутацию set_location следующим образом:
commit ("set_location", {день, location_id, location_name, location_payment})
затеммоя мутация
set_location(state, payload) {
try {
state.tour_plan.push(payload);
} catch (error) {
}
},
Я просто перенес полезную нагрузку в массив tour_plan
.
В мутации второго действия я ничего не помещаю в массив.Но я добавляю новые элементы в тот же массив, куда я уже отправил.
set_tour(state, payload) {
try {
state.tour_plan[state.tour_plan.length - 1].tour_id = payload.tour;
state.tour_plan[state.tour_plan.length - 1].tour_payment = payload.tour_payment;
state.tour_plan[state.tour_plan.length - 1].tour_name = payload.tour_name;
state.stage = 3;
} catch (error) {
}
}
, тогда у меня есть геттер с именем cost
cost: (state) => {
try {
let arr = [];
state.tour_plan.forEach(element => {
console.log("THIS GETTER RUNS");
if (element.location_name) {
let temp = {};
temp.day = element.day;
temp.item = 'Location fee';
temp.fee = element.location_payment
arr.push(temp);
}
if (element.tour_name) {
let temp = {};
temp.day = element.day;
temp.item = "Tour fee";
temp.fee = element.tour_payment;
arr.push(temp);
}
})
return arr;
} catch (error) {
console.log("ERR", error)
}
}
Но проблема здесь в том, что этот геттер запускается при первомвремя, когда я помещаю объект в массив tour_plan
.Но он не запустится, когда я изменю элементы add на уже существующий объект внутри массива?
У меня есть массив с именем tour_plan
в моем состоянии.
У меня есть два действия в vuexactions.js
- select_location
- select_tour
В select_location я фиксирую мутацию set_location, как этот коммит ("set_location", {day, location_id, location_name, location_payment})
тогда моя мутация
set_location(state, payload) {
try {
state.tour_plan.push(payload);
} catch (error) {
}
},
Я просто перенес полезную нагрузку в массив tour_plan
.
В мутации моего второго действия яне выдвигайте ничего в массив.Но я добавляю новые элементы в тот же массив, куда я уже отправил.
set_tour(state, payload) {
try {
state.tour_plan[state.tour_plan.length - 1].tour_id = payload.tour;
state.tour_plan[state.tour_plan.length - 1].tour_payment = payload.tour_payment;
state.tour_plan[state.tour_plan.length - 1].tour_name = payload.tour_name;
state.stage = 3;
} catch (error) {
}
}
, тогда у меня есть геттер с именем cost
cost: (state) => {
try {
let arr = [];
state.tour_plan.forEach(element => {
console.log("THIS GETTER RUNS");
if (element.location_name) {
let temp = {};
temp.day = element.day;
temp.item = 'Location fee';
temp.fee = element.location_payment
arr.push(temp);
}
if (element.tour_name) {
let temp = {};
temp.day = element.day;
temp.item = "Tour fee";
temp.fee = element.tour_payment;
arr.push(temp);
}
})
return arr;
} catch (error) {
console.log("ERR", error)
}
}
Но проблема здесь в том, что этот геттер запускается при первомвремя, когда я помещаю объект в массив tour_plan
.Но он не запустится, когда я изменю элементы add на уже существующий объект внутри массива?