淺談Vue+Ant Design form表單的一些坑
最近在用 vue + ant 寫項目發現 from 組件的坑還是比較多的
設置默認值的坑
控制臺報 Warning: You cannot set a form field before rendering a field associated with the value. You can use getFieldDecorator(id, options)
instead v-decorator="[id, options]"
to register it before render.
問題原因: 產生此問題的原因是 調用 setFieldsValue 方法時 入參對象設置瞭一些不該存 在 或頁面異步判斷的一些值
此時的 row 是直接調用接口拿到的數據 有一些其他不需要設置的值 如創建時間, 這時候就會報錯
解決思路: 使用 lodash.pick 方法和 object.assign 來設置需要渲染表單的值
優化後:
之後又出現瞭新的問題, 因為頁面上的異常處理是異步判斷的, 使用瞭 serializeType 來判斷是否顯示, 這時候直接設置 exceptionHandler 也是會報同樣的錯誤
解決思路: 用 promise 先設置可以直接渲染的值 其他異步判斷的值二次渲染
優化後:
問題解決
自定義 v-decorator 組件的坑
控制臺報: Warning: MachineMultiSelector default value
can not collect, please use option.initialValue
to set default value.
自定義 v-decorator 的組件需要兩個基本設置, 父傳子的 value 屬性, 和 value 發生變化子傳父的change 事件
這個問題產生的原因是 不可以給 props 的 value 設置默認值, 可以用 decorator.option.initialValue 屬性設置默認值
修改後:
問題解決
到此這篇關於淺談Vue+Ant Design form表單的一些坑的文章就介紹到這瞭,更多相關Vue Ant Design form表單內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- antd vue v-decorator的取值與賦值問題
- 解決Antd中Form表單的onChange事件中執行setFieldsValue不生效
- Ant Design of Vue select框獲取key和name的問題
- 關於Ant-Design-Vue快速上手指南+排坑
- SpringBoot+Mybatis plus+React實現條件選擇切換搜索實踐