vue全家桶填坑之路

近些日子上手vue全家桶,深感本身的知識水平淺薄,在摸索之中記錄了我遇到的一些問題的解決方法。html

場景:表單須要打開新頁面修改參數返回保存數據

這個一開始我就想利用vuex的store存儲到state之中就大功告成了。
然而發現事情並無那麼簡單,本身原來的js寫法是利用oninput事件進行記錄用戶輸入的內容。可是兼容性並非特別好。
幾天前搜索的時候發現了一個更好的方法:
先提取store中的數據傳給computed計算屬性,而後再把這個值傳給v-model用於表單的數據綁定,最後再爲這個計算屬性增長一個setter,在表單數據變化的時候對值進行commit提交,從而達到數據的實時更新的效果。
參考問答:請問vue的html標籤能夠用v-model來改變store中的state嗎?vue

refs的一些應用場景

在vue之中由於vm.$el的存在就能夠利用ref替代原來的dom操做了。
可是有些狀況refs仍是會出現問題的。
首先不要再mounted鉤子以前調用,這樣的話由於要獲取的對象並無掛載到實例上而致使失敗。
另外還有一種狀況就是,不要在響應式的渲染之中(我的的失敗經歷:條件渲染v-if和循環v-for)使用獲取ref註冊的元素或組件。
雖然在控制檯之中能夠看到this.$refs包含了你要獲取的對象,可是你在實際調用之中會獲取失敗。
這也是在vue官方文檔裏進行了說明:vuex

關於ref註冊時間的重要說明: 由於ref自己是做爲渲染結果被建立的,在初始渲染的時候你不能訪問它們 - 它們還不存在!$refs 也不是響應式的,所以你不該該試圖用它在模版中作數據綁定。segmentfault

對於這種狀況咱們能夠有如下兩種方法進行變通處理:dom

  1. 直接爲元素添加id經過原始dom進行操做處理this

  2. 經過nextTick進行渲染後的refs獲取,這樣就不會出現獲取失敗的狀況。
    對於nextTick的官方說明以下code

在下次 DOM 更新循環結束以後執行延遲迴調。在修改數據以後當即使用這個方法,獲取更新後的 DOMhtm

相關文章
相關標籤/搜索