반응형
Vuejs에서 디스패치 처리 후 $emit에 문의
상위 컴포넌트가 있습니다.
<template>
<div class="w-full">
<div class="card-body">
<city-edit-form :form="form" :resource="resource" @save_resource="func">
</city-edit-form>
</div>
</div>
</template>
<script>
export default {
methods: {
func() {
console.log("test");
}
}
};
</script>
하위 구성 요소:
<template>
<div>
<form action="#" method="POST" @submit.prevent="submit" v-else>
<button type="submit" class="btn-green">Save</button>
</form>
</div>
</template>
<script>
import { UPDATE_RESOURCE } from "../../../Stores/action-types";
export default {
props: {
form: { required: true },
resource: { required: true }
},
methods: {
submit() {
this.$store
.dispatch(`city/${UPDATE_RESOURCE}`, this.form)
.then(() => this.$emit("save_resource"));
}
}
};
</script>
액션은 다음과 같습니다.
[UPDATE_RESOURCE]({ commit, state }, form) {
commit(SET_LOADING, true);
return ResourceService.update(state.resource.id, form)
.then(({ data }) => {
commit(SET_RESOURCE, data);
})
.catch(errors => {
commit(SET_ERRORS, errors.response.data);
})
.finally(() => commit(SET_LOADING, false));
});
},
양식을 제출할 때 액션은 발송되었지만 아무것도 발송되지 않았습니다.
콘솔에 기록된 것이 없습니다.어디서 실수를 하죠?
갱신하다
Vue 툴바의 [이벤트(Event)]탭을 체크하면, 다음과 같이 표시됩니다.
이벤트가 전달된 것 같은데console.log
콘솔에 아무것도 기록하지 않습니다!유선이야!
해결 또는 거부가 트리거되는 동안 return 키워드 사용
[UPDATE_RESOURCE]({ commit, state }, form) {
commit(SET_LOADING, true);
return new Promise((resolve, reject) => {
ResourceService.update(state.resource.id, form)
.then(({ data }) => {
commit(SET_RESOURCE, data);
return resolve();
})
.catch(errors => {
commit(SET_ERRORS, errors.response.data);
return reject();
})
.finally(() => commit(SET_LOADING, false));
});
},
이벤트를 내보내는 대신 사용할 수 있습니다(그것은 문제가 되지 않습니다.mapGetters
<template>
<div class="w-full">
<div class="card-body">
<city-edit-form :form="form" :resource="myResource">
</city-edit-form>
</div>
</div>
</template>
<script>
import { mapGetters } from 'vuex'
export default {
computed: {
...mapGetters({
myResource: 'Stores/action-types/SET_RESOURCE', <---- needs to be modified
}),
}
};
</script>
이것은 당신이 어떤 일을 할 수 있도록
언급URL : https://stackoverflow.com/questions/58306174/call-emit-after-dispatch-action-in-vuejs
반응형
'programing' 카테고리의 다른 글
휴지 상태 수정 방법초기화예외: 역할 모음을 느리게 초기화하지 못했습니다. 프록시를 초기화할 수 없습니다. 세션 없음 (0) | 2022.07.10 |
---|---|
오류: java: javacTask: 소스 릴리스 8에는 타깃 릴리스 1.8이 필요합니다. (0) | 2022.07.10 |
vuex API 요청에서 Vue 구성 요소의 데이터 초기화 (0) | 2022.07.10 |
Vuejs의 데이터 객체에 있는 어레이에 항목을 푸시하려면 어떻게 해야 합니까?Vue가 .push() 메서드를 감시하고 있지 않은 것 같습니다. (0) | 2022.07.10 |
Vue.js 2.0을 사용한 자동 검색 (0) | 2022.07.10 |