방명록
- [Vue.js] watch로 두개 이상의 값 변경 감지2024년 09월 25일 13시 13분 43초에 업로드 된 글입니다.작성자: DandyNow728x90반응형
두 개 이상의 값 변경 감지
둘 이상의 값에 대한 변경을 감지하여 하나의 값이라도 변경이 일어나면 특정 메서드를 실행하는 코드가 필요했다. 아래 코드는 computed에 임의로 정의한 data1(), data2()의 반환 값을 watch에서 감지하여 둘 중 값이 하나라도 변경되면 동일한 handleUpdate() 함수가 호출되도록 작성한 것이다. 주의할 점은 감시하는 값이 객체인 경우에는 "deep" 속성을 추가해야 변경을 감지할 수 있다.
computed: { data1() { return this.$store.state.data1; // vuex 상태 값1 }, data2() { return this.$store.state.data2; // vuex 상태 값2 } }, watch: { data1: 'handleUpdate', data2: { handler: 'handleUpdate', deep: true // 상태 값이 객체인 경우 속성 값 변화 감지 } }, methods: { handleUpdate() { this.update1(); this.update2(); }, update1() { console.log("업데이트1"); }, update2() { console.log("업데이트2"); } }
2024-09-27 추가
watch를 사용하지 않더라도 양방향 데이터 바인딩(클래스 바인딩 등) 된 경우 Vuex의 state가 변경되면 자동으로 화면에 리렌더링 된 한다. 하지만 이번에 자동으로 리렌더링 되지 않는 문제가 있었다. 그 이유는 아래와 같은 방식으로 상태 값을 변경했기 때문이다. Vuex는 mutations를 통해서 상태를 업데이트해야 Vue가 이를 감지할 수 있다.
this.$store.state.data = "변경할 값"; // 이렇게 변경하면 값은 변경되지만 리렌더링이 되지 않는다.
728x90반응형'언어·프레임워크 > Vue.js' 카테고리의 다른 글
[Vue.js] 카운트다운 서클 타이머 버튼 만들기 (0) 2024.10.04 [Vue.js] Bootstrap Autoplaying Carousel 오작동 문제 (0) 2024.09.27 [Vue.js] 서버 이전 후 애플리케이션을 실행했는데 지도가 렌더링되지 않았다! ReferenceError: kakao is not defined (0) 2024.03.13 [Vue.js] 토스트 팝업시 오디오 재생 가능? 브라우저의 자동 재생 정책은 안가능! (0) 2023.09.25 [Vue.js] 고민 끝에 찾은 "vue3-toastify"를 이용한 토스트 알림 Custom 스타일-나만의-적용 방법 (0) 2023.09.20 다음글이 없습니다.이전글이 없습니다.댓글