Jor*_*bot 6 javascript scope vue.js vuejs2
我需要将一些值存储在beforeCreate
稍后我需要的Vue Component 钩子中beforeDestroy
.事情是(或者至少是我所理解的)beforeCreate
钩子无法获得被动反应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',
});
Run Code Online (Sandbox Code Playgroud)
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.min.js"></script>
<div id="app">
<my-component />
</div>
Run Code Online (Sandbox Code Playgroud)
看起来这个价值毕竟是反应性的......
this
的beforeCreate
?反应性是this.msg
,而不是this.value
您的困惑似乎来自于对反应数据更改时Vue如何更新DOM的误解:
您似乎认为,如果您更改this.msg
,则Vue将有选择地仅更新msg
使用的DOM的那些部分.事实并非如此.
真正发生的是:
this.msg
:)发生更改时,将重新呈现整个组件的virtualDOM .{{ value }}
正在重新评估,并且由于您也更改了它,因此其新值现在是新virtualDOM的一部分.{{ msg }}
和{{ value }}
,既有的<div>
含有这些引用的元素将与新内容进行修补.因此,您认为this.value
自己不会被动 - 但如果您更改它并在其旁边进行反应性更改,则新值将包含在组件的更新中.
要查看这this.value
不是被动的,只需注释掉以下内容this.msg
:
// this.msg += " So, I respond to changes.";
this.value += " But I'm still reactive... (?)";
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
143 次 |
最近记录: |