data值必须要是函数返回,这样才能使组件在多次调用的时候 改变其中的data其他的不受到影响
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>返回data必须是函数</title>
<!--引入vue -->
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
</head>
<body>
<div id="app">
<psd></psd>
<psd></psd>
<psd></psd>
<psd></psd>
</div>
<template id="myTem">
<div>
<button @click="counter ++">data值互不影响 : {{counter}}</button>
</div>
</template>
<script>
let Pro = Vue.extend({
template: "#myTem",
data(){
return {
counter : 0
}
}
});
Vue.component('psd', Pro);
new Vue({
el: "#app",
})
</script>
</body>
</html>
如果data是一个对象的话 ,那么调用组件中的data是唯一的,受到改变会相互影响
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>返回data必须是函数</title>
<!--引入vue -->
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
</head>
<body>
<div id="app">
<psd></psd>
<psd></psd>
<psd></psd>
<psd></psd>
</div>
<template id="myTem">
<div>
<button @click="counter ++">data值互不影响 : {{counter}}</button>
</div>
</template>
<script>
var data = {
counter : 0
}
let Pro = Vue.extend({
template: "#myTem",
data(){
return data
}
});
Vue.component('psd', Pro);
new Vue({
el: "#app",
})
</script>
</body>
</html>
本文深入探讨了Vue.js中组件data属性的正确使用方式,强调了data必须为函数以确保每次组件实例化时都能获得独立的数据副本,避免了组件间状态的意外共享,通过实例对比展示了data作为函数与直接对象赋值的不同效果。
1万+

被折叠的 条评论
为什么被折叠?



