【Vue.js】Vuex를 사용했을 때, 폼에서 v-model을 사용하면 버그가 나오는 문제의 대처
소개
Vuex를 사용하여 상태를 관리 할 때 양식 입력에서
v-model
를 사용하면,"잠깐! 마음대로 state 바꾸지 않고 제대로 mutation 통과해 줄까

그리고 화난 문제가 있습니다.
자신은 이것에 대해 어떻게 하는 것이 베스트인지 모르고, 시행착오를 반복하고 있었습니다.
그럴 때, 번거로움 없이 편한 방법을 여기 블로그 로 발견했으므로, 메모해 둡니다.
환경
OS: macOS Catalina 10.15.3
Vue: 2.6.10
vuex: 3.1.2
전제
사용자 정보를 입력하는 양식이 있다고 가정합니다.
이번은 간단한 예로 하기 위해서, 그 사용자 정보중에서도
name
를 입력하는 <input>
태그를 예로 합니다.v-model을 사용하는 경우
sample.vue
<template>
<!-- 略 -->
<input v-model="user.name" >
<!-- 略 -->
</template>
간단하게 이것으로 OK입니다.
Vuex를 사용하여이
user
정보를 관리하는 경우"잠깐! 마음대로 state 바꾸지 않고 제대로 mutation 통과해 줄까

그리고 화난 문제가 발생합니다.
이것을 큰 번거로움 없이 해결하는 방법은 다음과 같습니다.
개선 후
<input> 태그 내
sample.vue
<template>
<!-- 略 -->
<input
:value="user.name"
@input="updateUser($event, 'name')"
>
<!-- 略 -->
</template>
여기서
<input>
태그의 input 이벤트에서 다음 updateUser
메서드가 발화되고, 이 때 DOM 이벤트는 $event
에 들어갑니다.<input> 태그가 있는 컴포넌트의 methods
sample.vue
<script>
//略
export default {
//略
methods: {
updateUser(event, key_name) {
this.$store.commit('updateUserState', {
value: event.target.value, key_name });
}
}
}
//略
</script>
이전 DOM 이벤트에서 입력한 문자열
value
을 추출하고 key-name
와 함께 다음 Vuex 저장소의 mutations
에 정의된 updateUserState()
인수로 전달합니다.Vuex 스토어
store.js
export default ({
//略
mutations: {
updateUserState (state, { value, key_name }) {
state.user[key_name] = value;
}
}
//略
})
마지막으로, 이
updateUserState()
로 스토어의 user
의 값을 변경해, 스토어내와 <input>
태그내에 입력된 캐릭터 라인이 같게 됩니다.이상입니다!
사용하기 쉬운 코드로 매우 도움이되었습니다

결론
끝까지 읽어 주셔서 감사합니다

누군가의 도움이 되길 바랍니다

참고로 한 사이트 (항상 감사합니다)
Reference
이 문제에 관하여(【Vue.js】Vuex를 사용했을 때, 폼에서 v-model을 사용하면 버그가 나오는 문제의 대처), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/terufumi1122/items/112cf5f73c47fd82375b텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)