vue中$refs的refreshs方法,Uncaught TypeError: Cannot read property '$refs' of null报错

起因是接手开发代码的时候发现有个按钮的单击事件一直报错,他是这样写的:

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

我确认过注册组件是table,明白想要实现的功能是查询后表格刷新。

问题:
$refs是不能在template和computed里面访问的
,应该把单击事件绑定一个方法名,在方法中访问$refs。$refs在渲染结束后才会生效,直接写在template中相当于table并没有注册到$refs当中,所以会报Uncaught TypeError: Cannot read property '$refs' of null错误。

官方说明
关于 ref 注册时间的重要说明:因为 ref 本身是作为渲染结果被创建的,在初始渲染的时候你不能访问它们 - 它们还不存在!$refs 也不是响应式的,因此你不应该试图用它在模板中做数据绑定。

可行方法:

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

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

其他相关

ref被用来给元素或子组件注册引用信息。引用信息将会注册在父组件的 $refs 对象上。如果在普通的 DOM 元素上使用,引用指向的就是 DOM 元素;如果用在子组件上,引用就指向组件。

$refs是一个对象,里面包含ref注册过的组件,可以访问这个$refs对象方法对组件进行操作。

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。