반응형
데이터에 선언되지 않은 이 값은 왜 반응성이 있는가?
Vue 구성 요소에 값을 저장해야 하는 경우beforeCreate
나중에 내가 요구할 훅beforeDestroy
. 중요한 것은 (아니면 적어도 내가 이해한 것은 그런 것)beforeCreate
훅이 반응성(reactive)에 접근할 수 없음data
아직까지는
이 값들은 어디에도 필요없으니까beforeDestroy
난 그들이 반응하지 않는 것을 개의치 않아, 그래서 난 그것에 대해 잘 알아.하지만 마지막에 내가 시도했을 때:
Vue.component('my-component', {
data: function() { return { msg: "I'm a reactive value." }},
template: '<div><div>{{ msg }}</div> <div>{{value}}</div> <button @click="onClick">Click Me</button></div>',
beforeCreate: function() { this.value = "I was declared before data existed." },
methods: {
onClick: function(event) {
this.msg += " So, I respond to changes.";
this.value += " But I'm still reactive... (?)";
}
}
});
var app = new Vue({
el: '#app',
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.min.js"></script>
<div id="app">
<my-component />
</div>
결국 그 가치는 반응하는 것 같군...
- 내가 뭘 놓쳤지?
- 데이터를 추가할 때 고려해야 할 2차적 효과가 있는가?
this
에beforeCreate
?
반응성은 다음과 같다.this.msg
아닌this.value
귀하의 혼란은 사후 대응 데이터가 변경될 때 Vue가 DOM을 업데이트하는 방법에 대한 잘못된 생각에서 비롯된 것으로 보인다.
넌 그렇게 생각하는 것 같아, 만약 네가 바뀌면.this.msg
, 그러면 Vue는 선택적으로 DOM의 그 부분들만을 업데이트 할 것이다.msg
사용되었다.그렇지 않다.
실제로 일어나는 일은 다음과 같다.
- 템플릿의 사후 대응적 종속성(여기서:
this.msg
) 변경사항, 전체 구성요소에 대한 virtualDOM이 다시 렌더링되고 있다. - 이 과정에서
{{ value }}
재평가되고 있고, 당신도 그것을 바꿨기 때문에, 그것의 새로운 가치는 이제 새로운 virtualDOM의 일부가 되었다. - 그런 다음 Vue는 이전과 새로운 virtualDOM을 분리하고 실제 DOM을 발견한 변경사항으로 패치한다.
- 네가 둘 다 바꾼 이후로
{{ msg }}
그리고{{ value }}
, 양쪽 모두<div>
이러한 참조를 포함하는 요소는 새로운 내용으로 패치될 것이다.
그렇구나this.value
그 자체는 반응적이지 않지만, 만약 당신이 그것을 변화시키고 또한 그것과 함께 반응적인 변화를 한다면, 새로운 가치는 구성 요소의 업데이트에 포함될 것이다.
그것을 보기 위해서.this.value
반응적이지 않다. 단지 다음에 대한 변화만 언급하라.this.msg
:
// this.msg += " So, I respond to changes.";
this.value += " But I'm still reactive... (?)";
참조URL: https://stackoverflow.com/questions/51674011/why-is-this-value-reactive-if-its-not-declared-in-data
반응형
'Programing' 카테고리의 다른 글
Vue 2 사용자 지정 선택2: @put이 작동하는 동안 @change가 작동하지 않는 이유 (0) | 2022.04.26 |
---|---|
'내보내기 기본값' 외부의 구성 요소에서 VueJS 메서드를 호출하십시오. (0) | 2022.04.26 |
Java에서 문자열을 이중 문자열로 변환 (0) | 2022.04.26 |
하위 구성 요소 Vue ve-validate 확인 (0) | 2022.04.26 |
스프링 부트 및 Vue.js가 포함된 사용자 지정 로그인 페이지 (0) | 2022.04.26 |