Vue의 배열 변경이 반영되지 않습니다.
결국 하고 싶었던 일
트리 표시하여 선택한 데이터를 반영
공식 트리 샘플
htps // jp. 아 js. 오 rg/v2/에ぁmpぇs/t레에ゔぃ에w. HTML
사용하고 싶지 않아.
확실히 편하지만 아이 부품 손자 부품을 만들면
데이터의 버킷 릴레이가 되기 때문에 Vuex를 사용해야 되지 않을까. . . !
그래서 자식 구성 요소를 만들지 않고 노력했습니다.
해봤어
움직이지 않는다v-for
에서 목록 렌더링하는 트리 구조 부분을 클릭해도 열고 닫지 않습니다.
그러나 클릭 이벤트는 데리러 데이터 변경은되고있다
배열이 リアクティブ
가 아닙니다. . . .
배열 거동 검증
<template>
<div>
<ul>
<li v-for="(item, index) in list" :key="index"> {{ item }} </li>
</ul>
{{ list }}
<button @click="incrementArray">+1</button>
</div>
</template>
<script>
export default {
name: 'Sample',
data() {
return {
list: [1, 2, 3, 4, 5]
}
},
methods: {
incrementArray() {
this.list[0] = this.list[0] + 1;
console.log(this.list);
}
}
}
</script>
아칸, 반영됩니다. . . 뭐야 이거. . .
그러나 콘솔 로그를 보면 값이 증가하고 있기 때문에
원인은 再描画されていない
입니다.
조사한 참고가 되는 기사
htps // jp. 아 js. 오 rg/v2/에ぁmpぇs/t레에ゔぃ에w. HTML
사용하고 싶지 않아.
확실히 편하지만 아이 부품 손자 부품을 만들면
데이터의 버킷 릴레이가 되기 때문에 Vuex를 사용해야 되지 않을까. . . !
그래서 자식 구성 요소를 만들지 않고 노력했습니다.
해봤어
움직이지 않는다v-for
에서 목록 렌더링하는 트리 구조 부분을 클릭해도 열고 닫지 않습니다.
그러나 클릭 이벤트는 데리러 데이터 변경은되고있다
배열이 リアクティブ
가 아닙니다. . . .
배열 거동 검증
<template>
<div>
<ul>
<li v-for="(item, index) in list" :key="index"> {{ item }} </li>
</ul>
{{ list }}
<button @click="incrementArray">+1</button>
</div>
</template>
<script>
export default {
name: 'Sample',
data() {
return {
list: [1, 2, 3, 4, 5]
}
},
methods: {
incrementArray() {
this.list[0] = this.list[0] + 1;
console.log(this.list);
}
}
}
</script>
아칸, 반영됩니다. . . 뭐야 이거. . .
그러나 콘솔 로그를 보면 값이 증가하고 있기 때문에
원인은 再描画されていない
입니다.
조사한 참고가 되는 기사
<template>
<div>
<ul>
<li v-for="(item, index) in list" :key="index"> {{ item }} </li>
</ul>
{{ list }}
<button @click="incrementArray">+1</button>
</div>
</template>
<script>
export default {
name: 'Sample',
data() {
return {
list: [1, 2, 3, 4, 5]
}
},
methods: {
incrementArray() {
this.list[0] = this.list[0] + 1;
console.log(this.list);
}
}
}
</script>
아칸, 반영됩니다. . . 뭐야 이거. . .
그러나 콘솔 로그를 보면 값이 증가하고 있기 때문에
원인은
再描画されていない
입니다.조사한 참고가 되는 기사
요컨대
push()
pop()
shift()
unshift()
splice()
sort()
reverse()
를 사용하면 변경을 감지하고 다시 그립니다! ! this.$set()
를 사용하십시오! ! "알겠어
수정해 나가기
위 방법 헛되이 달려 강제 발화 패턴
<script>
export default {
name: 'Sample',
data() {
return {
list: [1, 2, 3, 4, 5]
}
},
methods: {
incrementArray() {
this.list[0] = this.list[0] + 1;
this.list.splice();
}
}
}
</script>
오~
겉보기에 좋지 않은 구현이지만
표시하고 있는 배열에 변경은 없지만 다른 변수의 상태가 표시에 영향을 주는 경우는
이렇게 할 수밖에 없을지도 모른다v-for
에서 다른 변수를 v-show
또는 v-if
에서 참조하는 경우
this.list.push({});
this.list.pop();
토카
this.list.unshift({});
this.list.shift();
나는 시도했다.
강제 발화시킨 경우 splice()
가 가장 빠릅니다.
this.$set 을 사용하는 패턴
<script>
export default {
name: 'Sample',
data() {
return {
list: [1, 2, 3, 4, 5]
}
},
methods: {
incrementArray() {
this.$set(this.list, 0, this.list[0] + 1);
}
}
}
</script>
표시에 사용하는 데이터에 변경 사항을 직접 추가하는 것이 좋습니다.
나머지는 위의 방법을 사용합니다.
〆
배열과 객체는 특별합니다.
다음 번은 트리 표시한 체크 박스의 녀석의 기사에서도 씁니다
떫지 않고 트리를 아이 컴퍼넌트화해 Vuex 데뷔할까. . .
Reference
이 문제에 관하여(Vue의 배열 변경이 반영되지 않습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/rh_taro/items/5c2af729dc7e3d6bd28a
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
<script>
export default {
name: 'Sample',
data() {
return {
list: [1, 2, 3, 4, 5]
}
},
methods: {
incrementArray() {
this.list[0] = this.list[0] + 1;
this.list.splice();
}
}
}
</script>
this.list.push({});
this.list.pop();
this.list.unshift({});
this.list.shift();
<script>
export default {
name: 'Sample',
data() {
return {
list: [1, 2, 3, 4, 5]
}
},
methods: {
incrementArray() {
this.$set(this.list, 0, this.list[0] + 1);
}
}
}
</script>
배열과 객체는 특별합니다.
다음 번은 트리 표시한 체크 박스의 녀석의 기사에서도 씁니다
떫지 않고 트리를 아이 컴퍼넌트화해 Vuex 데뷔할까. . .
Reference
이 문제에 관하여(Vue의 배열 변경이 반영되지 않습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/rh_taro/items/5c2af729dc7e3d6bd28a텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)