Вы можете добавить debugger;
в свой код вместо console.log
, чтобы создать точку останова, и проверить все в инструментах отладки вашего браузера.
Я не могу помочь, потому что есть очень запутанные вещи:
state: {
lockboxes: [],
workstation: []
},
Итак, оба являются массивами.
Но тогда:
setWorkstation: (state, workstation) => (state.workstation = workstation),
assignAgency(workstation) { workstation.assign = !workstation.assign},
Кажется, что workstation
не является массивом?
И также это, в получателях:
singleWorkstation: state => {
let result = {
...state.workstation,
...state.lockboxes
};
return result;
}
Я не понимаю этого. Вы создаете объект с помощью ...
массивов? Может быть, вы хотели сделать что-то вроде:
singleWorkstation: state => {
let result = {
...state.workstation,
lockboxes: [...state.lockboxes]
};
return result;
}
Если блокировка не является массивом? Но он назван как массив, он объявлен как массив. Однако у вас есть это:
const postdata = {
recordId: state.workstation.recordId,
agency: state.lockboxes.recordId
};
Так что, похоже, это не массив?
Наконец, в вашем методе updageAgency
, и вот в чем проблема: l ie:
return new Promise((resolve, reject) => {
axiosInstance
.post("Workstation/update", postdata)
.then(({ data, status }) => {
if (status === 200) {
resolve(true);
commit("setWorkstation", data.data);
commit("assignAgency", workstation);
console.log(state);
}
})
.catch(({ error }) => {
reject(error);
});
});
Первый аргумент .then
для топора ios вызывается только в том случае, если код состояния 2xx или 3xx. Таким образом, ваш тест if (status === 200)
является излишним, потому что ошибок там не будет. И если по другой причине у вас есть действительный код, отличный от 200, обещание никогда не заканчивается. reject
никогда не вызывается, так как это не ошибка, равно как и resolve
. Поэтому вы должны снять проверку с кода состояния.
Вы должны также позвонить resolve(true)
после двух commits
, а не до ...
Наконец ваша мутация assignAgency объявляется неверной:
assignAgency(workstation) { workstation.assign = !workstation.assign},
Мутация всегда принимает состояние в качестве первого параметра. Так что это должно быть либо:
assignAgency(state, workstation) {
state.workstation = {...workstation, assign: !workstation.assign}
},
Или
assignAgency(state) {
state.workstation = {...state.workstation, assign: !state.workstation.assign}
},
В зависимости от того, нужен ли вам аргумент workstation
, учитывая, что вам нужно просто переключить логическое значение внутри объекта .
TLDR: я не уверен, должен ли lockboxes
быть массивом или объектом, убрать проверку статуса внутри вашего обратного вызова ios, исправить мутацию assignAgency
, использовать точки останова с debugger;
и VueJS chrome плагин, чтобы помочь изучить ваш магазин во время разработки.