標籤:

各位,來談談用element-ui遇到的bug吧?


每一次升級,不僅是對新框架的考驗,更是對舊代碼和程序員的考驗。 —— 魯迅

瀉藥。

看熱鬧不嫌事情大呀~現在Github上還有10多頁issue呢。

最近升級了幾個CMS的element-ui版本(1.0 -&> 2.0),趁著有人問記錄一下~

版本更新

每次版本更新的版本號分為x、y、z。

  • x的更新意味著不兼容更新,需要放棄舊的內容,可能導致API的不兼容。
  • y的更新一般是添加新功能,不兼容的很少。
  • z的更新一般只是修復BUG

因此,在接受x級更新時要慎重行事。

樣式錯誤

一般都是舊版本下開發者的LESS變數不適用新版本的樣式大小。

比如這個 Button 中文字不居中問題,是由 Button 的高導致的:

--large {
height: $btn-height-lg;
font-size: $btn-font-size-lg;
}
--small {
height: $btn-height-sm;
font-size: $btn-font-size-defau< } --mini { height: $btn-height-mi; font-size: $btn-font-size-defau< }

修改你的 height 全局變數就可以了。

介面運行錯誤

在版本更新後,有些API調用會發生變化。Element 3.0 的參數比 2.0 更加對象化。

比如這個 table 的樣式問題:

tableRowClassName (row, index) {
...
}

發現樣式不見了,其實是介面改變了:

tableRowClassName ({row, rowIndex: index}) {
...
// 代碼無需改動
}

還有的地方去除了較少使用的參數。

比如這個 select 框選擇無效的問題:

handleCheckedCitiesChange(event) {
console.log(event.target.checked)
}

原因也是介面的改變:

handleCheckedCitiesChange(checked) {
console.log(checked)
}

渲染模式優化

有些時候,維護者為了提高渲染效率,也會進行渲染模式的優化。這種優化引發的BUG就只能採用一些 hack 的方式解決了。

比如在一些情況下表格列不會更新或者更新錯誤,我們可以通過這種方式解決:

& ... &
...
this.rerenderTable = false
this.$nextTick(() =&> {
this.rerenderTable = true
})

這其實是由於 Element 在 mounted 時改變了 fixed 列註冊監聽邏輯導致的。

結束

反正運行只有一種, Bug 各有各的 Bug 咯~該踩的坑還是會踩的,吼吼吼~

以上。


發布了2.0可是沒有遷移指南!


項目原來就是用1.0做的,前兩天升級成2.0,除了 scope=「scope」改成了slot-scope=「scope」以外別的沒有什麼大問題,項目一樣能跑起來


推薦閱讀:

應當如何入手Vue.js?
vue.js中集成ueditor?
vue-router如何取到vuex裡面的狀態,來決定是否跳轉?
知乎上哪位大神如果像「大漠窮秋」老師那樣搞一個「Vue課程」的培訓,應該會有很多人參加吧!?

TAG:Vuejs | ElementUI |