반응형
Vuex 스토어에서 Axios 예외를 포착하여 Vue.js 메서드에 저장
vuex 스토어에서 axios 예외를 포착하여 vue.js 메소드에 버리는 방법 ? 나의 목표는 이 예외를 다음과 같은 계산된 값을 재설정할 수 있도록 하는 것이다.input
사용.this.$forceUpdate()
.
내 방법으로는 다음과 같은 것이 있다.
methods: {
mymet: _.debounce(
function(table, id, key, event) {
const value = event.target.value;
this.$store.dispatch('UPDATE_TRANSACTIONS_ITEM', { table, id, key, value }).then(response => {
event.target.classList.remove("is-invalid")
event.target.classList.add("is-valid")
}, error => {
console.error("Got nothing from server. Prompt user to check internet connection and try again")
this.$forceUpdate();
})
}, 500
)
}
내 vuex 스토어에 다음과 같은 것이 있다.
const actions = {
UPDATE_TRANSACTIONS_ITEM ({ commit }, data) {
let company = {
[data.key]: data.value
}
axios.put(`/api/companies/${data.id}`, { company }).then( function ( response ) {
commit('SET_TRANSACTIONS_ITEM_UPDATE', { profile: data })
}).catch(function (error) {
throw error
})
}
}
const mutations = {
SET_TRANSACTIONS_ITEM_UPDATE (state, { profile }) {
state.company_data[profile.key] = profile.value
},
}
실제 동작 기능을 비동기식으로 만들어야 한다.
비동기 함수를 사용할 수 있는 능력이 있다면, 그냥 기다리면 된다.axios
전화를 걸어 오류에 거품이 일도록 하십시오(행동 자체에 어떤 것도 던질 필요 없음).
const actions = {
async UPDATE_TRANSACTIONS_ITEM ({ commit }, data) {
let company = {[data.key]: data.value};
await axios.put(`/api/companies/${data.id}`, { company }).then(() => {
commit('SET_TRANSACTIONS_ITEM_UPDATE', { profile: data })
});
}
}
그렇지 않으면 a를 돌려주면서 오류를 포착해 본인에게 전가해야 할 것이다.reject
처리기:
const actions = {
UPDATE_TRANSACTIONS_ITEM ({ commit }, data) {
return new Promise((resolve, reject) => {
let company = {[data.key]: data.value};
axios.put(`/api/companies/${data.id}`, { company }).then(() => {
commit('SET_TRANSACTIONS_ITEM_UPDATE', { profile: data });
resolve();
}, (error) => reject(error));
});
}
}
반응형
'programing' 카테고리의 다른 글
Vue js: 첫 페이지 로드에서만 css 애니메이션을 로드하는 방법 (0) | 2022.04.16 |
---|---|
Vuex 모듈을 올바르게 로드하는 방법 (0) | 2022.04.16 |
오류: 매개 변수에 대해 지정된 저장소 클래스 (0) | 2022.04.16 |
상위 구성 요소에서 하위 폼 데이터를 가져오는 VueJs (0) | 2022.04.16 |
활성 항목의 스타일링(vue.js) (0) | 2022.04.16 |