vue中$refs的refreshs方法,Uncaught TypeError: Cannot read property '$refs' of null報(bào)錯(cuò)

起因是接手開發(fā)代碼的時(shí)候發(fā)現(xiàn)有個(gè)按鈕的單擊事件一直報(bào)錯(cuò),他是這樣寫的:

<button>按鈕 @click="$refs.table.refresh(true)"</button>

我確認(rèn)過注冊(cè)組件是table,明白想要實(shí)現(xiàn)的功能是查詢后表格刷新。

問題:
$refs是不能在template和computed里面訪問的
,應(yīng)該把單擊事件綁定一個(gè)方法名,在方法中訪問$refs。$refs在渲染結(jié)束后才會(huì)生效,直接寫在template中相當(dāng)于table并沒有注冊(cè)到$refs當(dāng)中,所以會(huì)報(bào)Uncaught TypeError: Cannot read property '$refs' of null錯(cuò)誤。

官方說明
關(guān)于 ref 注冊(cè)時(shí)間的重要說明:因?yàn)?ref 本身是作為渲染結(jié)果被創(chuàng)建的,在初始渲染的時(shí)候你不能訪問它們 - 它們還不存在!$refs 也不是響應(yīng)式的,因此你不應(yīng)該試圖用它在模板中做數(shù)據(jù)綁定。

可行方法:

//template
<button>按鈕 @click="btnRefresh"</button>

//js方法
btnRefresh() {
    this.$refs.table.refreshs();
}

其他相關(guān)

ref被用來給元素或子組件注冊(cè)引用信息。引用信息將會(huì)注冊(cè)在父組件的 $refs 對(duì)象上。如果在普通的 DOM 元素上使用,引用指向的就是 DOM 元素;如果用在子組件上,引用就指向組件。

$refs是一個(gè)對(duì)象,里面包含ref注冊(cè)過的組件,可以訪問這個(gè)$refs對(duì)象方法對(duì)組件進(jìn)行操作。

https://blog.csdn.net/java_xxxx/article/details/81121199
https://blog.csdn.net/LPLIFE/article/details/95220875

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容