uniapp 组件引用 TypeError: this.$refs.xxx is not a function 解决方法(全)

本文详细讲述了在Vue项目中遇到的`TypeError`,即$refs引用组件方法失败的问题,重点介绍了三种解决方法:正确引用已注册组件、处理组件循环引用中的下标问题,以及理解并遵循组件命名规则。特别强调了组件命名必须遵循kebab-case或PascalCase标准。
摘要由CSDN通过智能技术生成

因为自己的项目中,某些常用模块自己定义了组件,使用时 常出现

TypeError: this.$refs.xxx is not a function (即没有xxx这个方法),结合网友和自身遇到的问题,得出三种方法

第一种:引用注册  即 在页面中 import 组件。 

import upimg from "../../components/store/user_photo.vue"; 

或者

import upimg from "@/components/store/user_photo.vue";

这两种方法都可以在页面中引入注册组件

解决方法:查看是否组件引用正确。

第二种:组件在循环里 

<view v-for="(item,index) in list">
    <component-father ref="outsideComponentRef">
    </component-father>
    <text>组件在循环了引用</text>
</view >

  解决方法:需加上下标 如: this.$refs[xxx][0] 

然而我的错的报错不是上面两种情况里所以还有第三种方法(至于其他的情况,目前还未发现,欢迎大家指正,添加)

我的报错原因时 组件命名错误!开始以为组件可以随意命名。看了官方文档,组件有命名格式的:

① 下划线  例如 kebab-case

当使用 kebab-case (短横线分隔命名) 定义一个组件时,你也必须在引用这个自定义元素时使用 kebab-case,例如 <my-component-name>。


② 首字母大写命名 即: PascalCase

当使用 PascalCase (首字母大写命名) 定义一个组件时,你在引用这个自定义元素时两种命名法都可以使用。 也就是说 <my-component-name> 和 <MyComponentName> 都是可接受的。

 希望能帮到大家!

  • 10
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值