반응형
상태 변경으로 업데이트되지 않는 Vue UI
나는 저장 상태의 변화를 추적하기 위해 버튼을 만들고 있다.
나는 기본적으로 세이브에서 성공/실패 응답을 받았을 때 적용되는 수업이 있다.이것은 잘 작동한다.
작동이 안 되는 부분은 내 단추 안에 있는 선택 텍스트야.
export default {
name: "saveButton",
components: {spinner},
data: function() {
return {
hover: false
}
},
props: ['handleSubmit', 'isSaving', 'saveStatus'],
methods: {
submit() {
this.$emit("handleSubmit")
},
mouseOver(value) {
this.hover = value;
}
},
computed: {
buttonClass() {
if (this.saveStatus == 'success') {
return 'save-success'
}
else if (this.saveStatus == 'failure') {
return 'save-failed'
}
else {
return ''
}
}
}
}
</script>
<template>
<div class="settings--button-wrapper">
<button class="btn btn--small"
:class="buttonClass"
type="button"
@click="submit()"
v-if="!isSaving"
v-on:mouseover="mouseOver(true)"
v-on:mouseleave="mouseOver(false)"
>
<span v-if="this.saveStatus == '' || this.hover">Save</span>
<span v-if="this.saveStatus == 'failure' && !this.hover">Save failed</span>
<span v-if="this.saveStatus == 'success' && !this.hover">Saved!</span>
</button>
<spinner v-if="isSaving" class="settings--spinner">
<span>Saving...</span>
</spinner>
</div>
</template>
응답에 실패하면 내 계산 방법이 내 클래스를 업데이트하고 버튼이 빨간색으로 바뀐다. this.saveStatus
또한 업데이트되지만, 내 버튼 텍스트에는 여전히 "Save failed"가 아니라 "Save"만 적혀 있다.
그래서 이 부분은 특히 처음에 업데이트되지 않는다.
<span v-if="this.saveStatus == '' || this.hover">Save</span>
<span v-if="this.saveStatus == 'failure' && !this.hover">Save failed</span>
<span v-if="this.saveStatus == 'success' && !this.hover">Saved!</span>
이상한 점은, 내가 버튼 위로 마우스를 올리면, 그 버튼이 변경 사항을 집어들고, 내가 그 버튼에서 떨어져 있을 때 "Save failed"에 붙는다는 것이다.
업데이트: Save(저장)를 클릭한 후 마우스를 빠르게 이동할 때 문제가 발생한다는 것을 알게 되었다.v-on:mouseleave
이벤트는 사실 제 시간에 내 쥐를 잡아채지 못하기 때문에hover
변수가 true로 설정됨 - 'Save' 텍스트가 계속 표시됨.
왜 이런 일이 일어나는지 내가 어떻게 고칠 수 있는지 알아?
그래서 정답은 Save를 클릭할 때isSaving
가변 입력 후 버튼 요소가 사라짐 - 없음mouseleave
이벤트가 등록되고 있었다. 그래서 여전히 호버 상태에 있다고 생각하고 있었다.
반응형
'Programing' 카테고리의 다른 글
Vue 1.x/2.x: $route 개체에서 vue-router 경로 URL 가져오기 (0) | 2022.05.25 |
---|---|
다른 계산 속성을 호출할 때 정의되지 않은 Vue 계산 속성 (0) | 2022.05.25 |
Java에서 c 함수 호출 (0) | 2022.05.24 |
포인터 유효성 테스트(C/C++) (0) | 2022.05.24 |
Java용 REST 클라이언트를 어떻게 생성하십니까? (0) | 2022.05.24 |