반응형
디스패치 수신이 값으로 정의되지 않았습니다.
디스패치 후 상태 갱신에 문제가 발생.
콘솔 로깅 결과dispatch
드라마들.Promise pending
및 가치undefined
그래서 가게에는 절대 가지 않아요
다음에 나타내는 함수는dispatch
핸들러
unsetSelected() {
let some = this.$store.dispatch('user/selectedDevice', null)
console.log(some)
}
<span class="ellipsis" @click="setSelected(device)">
<i v-if="selectedDevice && selectedDevice.id == device.id"
@click="unsetSelected()"
class="fa fa-times-circle">
</i>
<i v-else="" class="fa fa-ellipsis-v"></i>
</span>
액션 핸들러는 다음과 같습니다.
selectedDevice ({ commit }, data) {
commit ('SELECTED_DEVICE', data);
}
변이 핸들러에 경보를 발령했는데 코드가 예상대로 작동하고 있다는 것을 알게 되었습니다. 코드도 정상적으로 동작하고 있고dispatch
위의 DOM으로 기능합니다.
쇠사슬로 묶어야 한다..stop
수식자:@click.stop="unsetSelected()"
디스패치 인스턴스 메서드의 Vuex API 참조:
트리거된 모든 작업 처리기를 확인하는 약속을 반환합니다.
그래서 전화한다dispatch
약속을 반환합니다.컴포넌트 내부에서 데이터를 수신하려면 이 약속을 해결해야 합니다.
구성 요소의 방법을 다음과 같이 수정할 수 있습니다.
// using async/await
async unsetSelected() {
try {
let some = await this.$store.dispatch('user/selectedDevice', null)
console.log(some)
} catch (error) {
// handle error
}
}
// using Promise API
unsetSelected() {
this.$store.dispatch('user/selectedDevice', null)
.then((some) => {
console.log(some)
})
.catch((error) => {
// handle error
})
}
또한.selectedDevice
데이터는 반환되지 않습니다.some
(또는 응답) 해결된 약속에서undefined
예를 들어, 문제의 코드를 입력합니다.
이 문제를 해결하려면 스토어 액션에return
원하는 데이터가 포함된 문을 사용하여 컴포넌트로 돌아갑니다.
단, Vuex 아키텍처에 따라 상태 변환이 커밋된 후 값이 반응적으로 업데이트되는 상태/게터를 매핑하는 것이 좋습니다.
언급URL : https://stackoverflow.com/questions/53301922/dispatch-receiving-undefined-as-a-value
반응형
'programing' 카테고리의 다른 글
Firestore가 'onSnapshot() requires between 인수'를 슬로우합니다. (0) | 2022.06.27 |
---|---|
Vuex에서 다른 액션 내에서 액션을 호출하는 것은 잘못된 관행입니까? (0) | 2022.06.27 |
파일에 대해 DragEnd 이벤트가 발생하지 않음 (0) | 2022.06.27 |
Bootstrap-vue 모달 3회 오픈 (0) | 2022.06.27 |
Java에서는 선행 0을 유지하면서 바이트 배열을 16진수 문자열로 변환하려면 어떻게 해야 합니까? (0) | 2022.06.27 |