Vue中inheritAttrs的使用實例詳解
今天舉一個例子解釋一下inheritAttrs的使用
先看代碼
<body> <div id="app" class="vueclass"> <my-com title="標題" wx-attr1="未定義屬性1" wx-attr2="未定義屬性2"></my-com> </div> <script type="text/javascript"> Vue.component("my-com",{ props:{ title:String, }, inheritAttrs:false, template:` <div wx-attr1="hello" > <h1>{{title}}</h1> </div> `, }) const App = new Vue({ el:"#app", data:{ }, methods:{ } }) </script> </body>
當inheritAttrs的值為false時,自定義屬性是插入不到我們的組件中的,結果如下
當inheritAttrs的值為true時,自定義屬性可以插入到我們的組件中,並且會覆蓋掉在組件中相同未定義屬性名稱的值,結果如下
但在組件中定義的class屬性和style屬性,使用inheritAttrs屬性並不能阻礙class屬性和style屬性傳到模板中,如果模板中也存在class屬性和style屬性,這樣屬性會疊加到一起
結果如下
還有一種情況,先看代碼
<body> <div id="app" class="vueclass"> <my-com title="標題" wx-attr1="未定義屬性1" wx-attr2="未定義屬性2" class="wxClass" style="color:red"></my-com> </div> <script type="text/javascript"> Vue.component("my-com",{ props:{ title:String, }, inheritAttrs:, template:` <div wx-attr1="hello" class="div1" style="width:500px" v-bind="$attrs"> <h1>{{title}}</h1> </div> `, }) const App = new Vue({ el:"#app", data:{ }, methods:{ } }) </script> </body>
當模板裡綁定v-bind=”$attrs”時,inheritAttrs為true時,自定義屬性可以插入到我們的組件中,並且會覆蓋掉在組件中相同未定義屬性名稱的值,結果如下
當模板裡綁定v-bind=”$attrs”時,inheritAttrs為false時,自定義屬性可以插入到我們的組件中,但不會覆蓋掉在組件中相同未定義屬性名稱的值,結果如下
當模板裡綁定v-bind=”$attrs”時,並不會影響class屬性與style屬性,組件裡的值依然會疊加到模板裡
到此這篇關於Vue中inheritAttrs的使用的文章就介紹到這瞭,更多相關Vue inheritAttrs使用內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- vue3中$attrs的變化與inheritAttrs的使用詳解
- 詳解vue3中渲染函數的非兼容變更
- vue $attrs和$listeners的使用與區別
- Vue祖孫組件如何實現傳值
- vue3中的透傳attributes教程示例詳解