vue中報錯Error in onReady hook: "TypeError: Cannot read property 'setRules' of undefined"

Vue中報錯“Error in onReady hook: "TypeError: Cannot read property 'setRules' of undefined"”


image.png

百度說“refs和ref名字不一致:把refs和ref名字保持一致就行了”,但是我這本來就是一致的,一直回退后發現,組件在加v-if判斷之前都是正常的,沒有報錯,那么問題就在v-if處,把v-if改成v-show就可以了。


image.png

vue的加載渲染,優先渲染html代碼,此時js代碼還沒有執行,所以動態屬性還沒有值,因此被v-if包裹的代碼塊沒有被封裝,此時執行js初始化代碼的時候,調ref組件自然是undefined的。而v-show會在加載html的時候加載完整代碼,只是不展示。

v-if和v-show的區別:
手段:v-if是通過控制dom節點的存在與否來控制元素的顯隱;v-show是通過設置DOM元素的display樣式,block為顯示,none為隱藏;
編譯過程:v-if切換有一個局部編譯/卸載的過程,切換過程中合適地銷毀和重建內部的事件監聽和子組件;v-show只是簡單的基于css切換;
編譯條件:v-if是惰性的,如果初始條件為假,則什么也不做;只有在條件第一次變為真時才開始局部編譯(編譯被緩存?編譯被緩存后,然后再切換的時候進行局部卸載); v-show是在任何條件下(首次條件是否為真)都被編譯,然后被緩存,而且DOM元素保留;
性能消耗:v-if有更高的切換消耗;v-show有更高的初始渲染消耗;
基于以上區別,因此,如果需要非常頻繁地切換,則使用 v-show 較好;如果在運行時條件很少改變,則使用 v-if 較好。

原文鏈接:https://blog.csdn.net/bihaiyanyu/article/details/109216797

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容