vue呼叫元件的屬性 Vue 元件例項屬性的使用

2021-10-13 04:40:43 字數 1565 閱讀 9462

前言

因為最近面試了

二、三十個人,發現大部分都還是只是停留在 vue 文件的教程。有部分連教程這部分的文件也沒看全。

所以稍微寫一點,讓新上手的 vuer 多了解 vue 文件的其他更需要關注的點。

因為 vue 文件已經是個很成熟的文件,並且實現的 demo 簡潔明瞭,我就不具體寫實現**了,文內只會貼需要關注的知識的文件位址

v-model

自定義元件上使用 v-model

一般可能會問怎麼在自己寫的元件上實現 v-model。因為一些同學用多了元件庫,用的心安理得,完全不去想為什麼元件庫可以用 v-model 做各種雙向繫結。問到如何自己寫的時候直接懵逼了,所以這個是一定要會的。如果能在回答一下子元件可以用 model 屬性,讓 v-model 不再需要對 value 這個 props 做雙向繫結就更好了, 說明你文件看的仔細。

其實 v-model 就是 prop + $emit 的語法糖, 可以拆成 value 和 @input

所以記住拉,如果是簡單的子元件要同步資料到父元件,不要再傻傻的 prop + $emit, 在父元件裡修改資料了。

多個屬性的雙向繫結呢

如果你會用 v-model,那麼就要知道 v-model 只能繫結乙個屬性,如果父元件有多個需要和子元件的做雙向繫結的屬性怎麼辦?你可以會想到用物件或者陣列。但是這可以會導致操作過於複雜。然而可以用 .async 修飾符完成。

例項屬性

attrs && props

這是個不常用的屬性,但是在高階用法裡非常常見。比如我把元件庫里的多個元件封裝一層,成為乙個大的業務元件。我用這個大元件的時候需要靈活控制裡面元件庫的 prop,將引數透傳到元件庫的元件裡。示例如下:

// my-search.vue

搜尋 // page.vue

有的小夥伴回答在 my-search 裡定義這個 prop ,然後傳到 el-input 裡。然而他有 20 多個 prop,這樣太麻煩了。

有聰明的小夥伴說傳個物件進去,然而最後還是沒解決怎麼把這個物件繫結到 el-input 上。答案已經很接近了。

其實 vue 已經幫我們把這個物件弄好了,我們只要直接在 el-input 元件上寫 v-bind="$attrs"。

別忘了 v-bind 可以傳物件的啊!!

listeners

上面搞定了 props 的透傳,別忘了還有事件的透傳。同理 vue 已經幫我們弄好了。v-bind="$listeners"。

常用的例項屬性

其他我們比較常用的就是 $refs、$parent、$children、$el。

不常用的例項屬性

$slots、$scopedslots。slots 可以判斷父元件裡道理傳了哪些 slot 進來。其他的大家就去官網文件裡看把。

先到這到這裡應該大家能了解到,除了 vue 文件除了教程章節,api 章節也至關重要。我覺得熟讀 vue 文件,vue 深度就能達到一定程度。至少面試問 vue 的話,如果連 api 都不熟,會比較扣分。如果需要更深入了解就去看原始碼,看優秀的元件庫的實現。。

其實我有很多也是從元件庫里學到的~ 建議有空多看看你經常使用的元件庫原始碼,至少比 vue 原始碼簡單多了。。而且更貼合我們的使用場景

Vue元件 元件的屬性

在html中使用元素,會有一些屬性,如class,id,還可以繫結事件,自定義元件也是可以的。當在乙個元件中,使用了其他自定義元件時,就會利用子元件的屬性和事件來和父元件進行資料交流。比如,子元件需要某個資料,就在內部定義乙個prop屬性,然後父元件就像給html元素指定特性值一樣,把自己的data...

vue元件name屬性

我們在寫vue專案的時候會遇到給元件命名 這裡的name非必選項,看起來好像沒啥用處,但是實際上這裡用處還挺多的 export default 舉個例子 我們有個元件命名為detail,其中dom載入完畢後我們在鉤子函式mounted中進行資料載入 export default mounted me...

Vue元件prop屬性

vue.component blog post post title hello 所有的 prop 都使得其父子 prop 之間形成了乙個單向下行繫結 父級 prop 的更新會向下流動到子元件中,但是反過來則不行。每次父級元件發生更新時,子元件中所有的 prop 都將會重新整理為最新的值。這意味著你...