Vue中inheritAttrs的使用
<body>
<div id="wxApp" class="appclass">
<blog-post title="标题" wx-attr1="未定义属性" wx-attr2="未定义属性"
style="color:red" class="wxclass"></blog-post>
</div>
<script>
Vue.component('blog-post',{
inheritAttrs:true,
props:{
title:String,
},
template:`
<div wx-attr1="hello" class="div1" style="width:500px" v-bind="$attrs" >
<h1>title:{{title}}</h1>
<ul>
<li v-for="item in $attrs">{{item}}</li>
</ul>
</div>`,
})
var wxApp = new Vue({
el:"#wxApp",
data:{
},
methods:{
}
});
</script>
</body>
当inheritAttrs取值为true,且模板里绑定v-bind="$attrs"时,自定义属性可以插入到我们的组件中,并且不会覆盖掉在组件中相同未定义属性名称的值,结果如下
当inheritAttrs取值false时,且模板里绑定v-bind="$attrs"时自定义属性可以插入到我们的组件中,但会覆盖掉在组件中相同未定义属性名称的值,结果如下
当模板未绑定v-bind="$attrs"时
<body>
<div id="wxApp" class="appclass">
<blog-post title="标题" wx-attr1="未定义属性" wx-attr2="未定义属性" style="color:red" class="wxclass"></blog-post>
</div>
<script>
Vue.component('blog-post',{
inheritAttrs:true,
props:{
title:String,
},
template:`
<div wx-attr1="hello" class="div1" style="width:500px" >
<h1>title:{{title}}</h1>
<ul>
<li v-for="item in $attrs">{{item}}</li>
</ul>
</div>`,
})
var wxApp = new Vue({
el:"#wxApp",
data:{
},
methods:{
}
});
</script>
</body>
inheritAttrs取值为true时,自定义属性可以插入到我们的组件中,并且会覆盖掉在组件中相同未定义属性名称的值,结果如下
inheritAttrs的值为false时,自定义属性是插入不到我们的组件中的,结果如下
在组件中定义的class属性和style属性,使用inheritAttrs属性并不能阻碍class属性和style属性传到模板中,如果模板中也存在class属性和style属性,这样属性会叠加到一起