반응형
Vue.js- Vuex 업데이트 - 구성 요소 DOM에 반영되지 않은 어레이 내부 상태
Vuex/스토어:
import Vue from 'vue';
import Vuex from 'vuex';
Vue.use(Vuex);
const store = new Vuex.Store({
state: {
todos: [
{id: 1, text: 'Clean kitchen', done: false},
{id: 2, text: 'Clean bedroom', done: false},
{id: 3, text: 'Clean bathroom', done: false},
{id: 3, text: 'Clean clothes', done: true},
],
},
mutations: {
x(state, data) {
state.todos[0] = data;
}
},
});
export default store;
테스트.vue :
<template>
<div class="container">
<ul>
<li
v-for="(item, i) in todos"
:key="i"
>
<span class="description">{{ item.text }}</span>
<span class="status">{{ item.status }}</span>
</li>
</ul>
<button @click="x">Change object</button>
</div>
</template>
<script>
import { mapState } from 'vuex';
export default {
methods: {
x() {
this.$store.commit('x', {id: 34, text: 'Celebrate birthday', done: false});
}
},
computed : {
...mapState(['todos']),
},
}
</script>
Change object(개체 변경) 버튼을 클릭하면 Vue Dev Tools에서 스토어의 상태가 변경되었지만 구성 요소 Test.vue에 의해 표시된 데이터는 변경되지 않고 첫 번째 리 항목 "Clean kitchen"이 남아 있는 것을 볼 수 있다.Vue Dev Tools의 변경 사항을 커밋하면 변경 사항이 발생한다.내가 뭘 잘못하고 있는지 모르겠어.
States https://vuex.vuejs.org/guide/state.html "store.state.count가 변경될 때마다 계산된 속성이 다시 설정되고 관련 DOM 업데이트가 트리거된다."
반응성 주의사항이 있으니, 사용하십시요.Vue.set
함수:
x(state, data) {
Vue.set(state.todos,0,data);
}
자세한 내용은 다음을 참조하십시오.
반응형
'IT이야기' 카테고리의 다른 글
프로그래밍 방식으로 변경된 요소의 v-모델 업데이트 방법 (0) | 2022.05.23 |
---|---|
Vuetify 버튼 너비 및 패딩 변경 (0) | 2022.05.23 |
IntelliJ는 마우스에 JavaDocs 도구 설명 표시 (0) | 2022.05.23 |
패커리에 동적 VueJS 구성 요소를 추가하는 방법 (0) | 2022.05.23 |
vue 플러그인의 유형을 추가하는 방법? (0) | 2022.05.22 |