亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

vue如何訪問元素和組件

發布時間:2020-12-02 13:45:43 來源:億速云 閱讀:221 作者:小新 欄目:web開發

這篇文章主要介紹了vue如何訪問元素和組件,具有一定借鑒價值,需要的朋友可以參考下。希望大家閱讀完這篇文章后大有收獲。下面讓小編帶著大家一起了解一下。

訪問根實例

在每個new Vue實例的子組件中,其根實例可以通過$root屬性進行訪問。
例子:

// Vue 根實例
new Vue({
  data: {
    foo: 1
  },
  computed: {
    bar: function () { /* ... */ }
  },
  methods: {
    baz: function () { /* ... */ }
  }
})

所有的子組件都可以將這個實例作為一個全局store來訪問或使用。

/ 獲取根組件的數據
this.$root.foo

// 寫入根組件的數據
this.$root.foo = 2

// 訪問根組件的計算屬性
this.$root.bar
// 調用根組件的方法
this.$root.baz()

注意:
對于demo或非常小型的有少量組件的應用來說這是很方便的。不過這個模式擴展到中大型應用來說就不合適了。因此在絕大多數情況下,我們強烈推薦使用Vuex來管理應用的狀態。

訪問父組件實例

和$root類似,$parent屬性可以用來從一個子組件訪問父組件的實例。它提供了一種機會,可以在后期隨時觸達父級組件,以替代將數據以prop的方式傳入子組件的方式。
注意:

在絕大多數情況下,觸達父級組件會使得你的應用更難調試和理解,尤其是當你變更了父級組件的數據的時候。當我們稍后回看那個組件的時候,很難找出那個變更是從哪里發起的。

## 訪問子組件實例或子元素 ##
盡管存在prop和事件,有的時候你仍可能需要在Javascript里直接訪問一個子組件。為了達到這個目的,你可以通過ref特性為這個子組件賦予一個ID引用。例如:

<base-input ref="usernameInput"></base-input>

現在在你已經定義了這個ref的組件里,你可以使用:

this.$refs.usernameInput

來訪問這個 <base-input> 實例,以便不時之需。
當 ref 和 v-for 一起使用的時候,你得到的引用將會是一個包含了對應數據源的這些子組件的數組。
注意:

$refs 只會在組件渲染完成之后生效,并且它們不是響應式的。這僅作為一個用于直接操作子組件的“逃生艙”——你應該避免在模板或計算屬性中訪問 $refs。

依賴注入

<google-map>
  <google-map-region v-bind:shape="cityBoundaries">
    <google-map-markers v-bind:places="iceCreamShops"></google-map-markers>
  </google-map-region>
</google-map>

在這個組件里,所有<google-map>的后代都需要訪問一個getMap方法,以便知道要跟哪個地圖進行交互。不幸的是,使用$parent屬性無法很好的擴展到更深層級的嵌套組件上。這也是依賴注入的用武之地,它用到了兩個新的實例屬性:provide和inject。
provide選項允許我們指定我們想要提供給后代組件的數據/方法。在這個例子中,就是<google-map>內部的getMap方法:

provide(){
    return{
        getMap:this.getMap
    }
}

然后在任何后代組件里,我們都可以通過使用inject選項來接收指定的我們想要添加在這個實例上的屬性:

inject:['getMap']

相比$parent來說,這個用法可以讓我們在任意后代組件中訪問getMap,而不需要暴露整個<google-map>實例。這允許我們更好的持續研發該組件,而不需要擔心我們可能會改變/移除一些子組件依賴的東西。同時這些組件之間的接口是始終明確定義的,就和props一樣。
祖先組件不需要知道哪些后代組件使用它提供的屬性
后代組件不需要知道被注入的屬性來自哪里
注意:

然而,依賴注入還是有負面影響的。它將你的應用以目前的組件組織方式耦合了起來,使重構變得更加困難。同時所提供的屬性是非響應式的。這是出于設計的考慮,因為使用它們來創建一個中心化規模化的數據跟使用 $root做這件事都是不夠好的。如果你想要共享的這個屬性是你的應用特有的,而不是通用化的,或者如果你想在祖先組件中更新所提供的數據,那么這意味著你可能需要換用一個像 Vuex 這樣真正的狀態管理方案了。

感謝你能夠認真閱讀完這篇文章,希望小編分享vue如何訪問元素和組件內容對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,遇到問題就找億速云,詳細的解決方法等著你來學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

永修县| 萝北县| 普洱| 怀来县| 亳州市| 包头市| 宜章县| 梅州市| 东乡县| 彩票| 西昌市| 朔州市| 兴化市| 太康县| 莱阳市| 罗山县| 铜陵市| 都昌县| 新民市| 邯郸县| 策勒县| 堆龙德庆县| 百色市| 聊城市| 吴江市| 枣强县| 岳池县| 达日县| 淅川县| 应用必备| 博白县| 浑源县| 钟山县| 循化| 合川市| 威远县| 高碑店市| 大关县| 安泽县| 瑞安市| 大冶市|