vue 데이터 대상 재부여 값이 잘못되었습니다 (변경되지 않음) 해결 방법
여기는 데이터입니다.
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 데이터 대상의 재부여 값이 무효(변경되지 않음)의 해결 방식은 바로 편집자가 여러분에게 공유한 모든 내용입니다. 여러분에게 참고가 되고 저희를 많이 사랑해 주시기 바랍니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Fastapi websocket 및 vue 3(Composition API)1부: FastAPI virtualenv 만들기(선택 사항) FastAPI 및 필요한 모든 것을 다음과 같이 설치하십시오. 생성main.py 파일 및 실행 - 브라우저에서 이 링크 열기http://127.0.0.1:...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.