vue 데이터 대상 재부여 값이 잘못되었습니다 (변경되지 않음) 해결 방법

vue에 비교적 깊은 문제가 존재하는 것은 데이터의 속성 대상이 초기화할 때 {}이면 뒤에 일반적인 js 문법으로 값을 부여하면 무효라는 것이다
여기는 데이터입니다.

data() {
 return {
  model: {}
 };
 }
여기는 방법의 일반부치입니다.

afterUpload(response) {
 this.model.icon = response.url;
}
일반 방법은 무효입니다. vue가 제공하는 방법으로 설명을 다시 표시해야 합니다.

afterUpload(response) {
 this.$set(this.model,'icon',response.url)
}
보충 지식: Vue.js-수조와 대상의 값 동적 변화 & 복제
이 글은 주로 vue수조와 대상이 동적 변화를 직접 부여할 수 없음 & 복제 상황과 해결 방법을 소개하였으며, 필요한 친구는 참고하시기 바랍니다.
1. 직접 부여 동적 변화
1.1, Vue는 다음과 같은 변경된 배열을 감지할 수 없습니다.
색인을 이용하여 항목을 직접 설정할 때, 예를 들어
vm.items[indexOfItem] = newValue
수조의 길이를 수정할 때, 예를 들어
vm.items.length = newLength
1.2, 솔루션
첫 번째 상황이 필요할 때 사용할 수 있다
this.$set(this.arr,index,newVal)
또는
this.arr = [새 배열]
2.1, Vue는 다음과 같은 변경된 객체를 감지할 수 없습니다.
초기화할 때, 존재하지 않는 대상의 속성을 수정할 때
this.obj.b = 3
Ps: 페이지 부자 구성 요소를 새로 고치지 않고 두 번째 트리거하면 됩니다. 첫 번째 트리거 렌더링으로 인해 첫 번째는 트리거되지 않고 두 번째만 표시됩니다.
2.2 솔루션
이미 존재하는 속성을 초기화하면 동적 변화를 직접 감지할 수 있습니다
this.obj.a = 3
또는
위에서 감지할 수 없는 또 다른 해결 방안
this.$set(this.person,'age',12)
또는
this.obj = { a: 3, b: 4 }
여러 객체를 추가해야 하는 경우
Object.assign({},this.person,{age:12,name:'wee'})
2. 배열, 개체 클론
구성 요소 간에 대상을 전달할 때, 이 대상의 인용 형식은 모두 하나의 주소를 가리키기 때문에 (기본 형식과null을 제외하고, 대상 간의 값은 주소를 진정한 의미의 복사가 아니라 같은 것을 가리키기 때문) 다음과 같다.
배열:

var a = [1,2,3];
var b = a;
b.push(4); // b 4
alert(a); // a [1,2,3,4]
객체:

var obj = {a:10};
var obj2 = obj;
obj2.a = 20; // obj2.a 
alert(obj.a); // 20,obj a  
이것은 대상 유형이 직접 값을 부여하기 때문에 인용을 같은 주소로 가리키기 때문에obj를 수정하면obj2도 수정됩니다.
따라서 vue에서 여러 구성 요소가 같은 대상을 데이터로 인용하면 한 구성 요소가 대상 데이터를 변경할 때 다른 대상의 데이터도 동기화됩니다.이런 양방향 귀속이 필요하다면 자연히 가장 좋지만, 이런 귀속이 필요하지 않고 각 구성 요소의 대상 데이터 간의 독립, 즉 서로 관련되지 않는 대상 사본이 필요하다면 아래의 방법으로 해결할 수 있다.

computed: { 
 data: function () { 
  var obj={}; 
  obj=JSON.parse(JSON.stringify(this.templateData)); //this.templateData  
  return obj 
 } 
 }
물론 일상적인 복제도 이 관건적인 코드를 사용할 수 있다
JSON.parse(JSON.stringify(...));
상기 vue 데이터 대상의 재부여 값이 무효(변경되지 않음)의 해결 방식은 바로 편집자가 여러분에게 공유한 모든 내용입니다. 여러분에게 참고가 되고 저희를 많이 사랑해 주시기 바랍니다.

좋은 웹페이지 즐겨찾기