5***@qq.com
5***@qq.com
  • 发布:2019-01-25 16:00
  • 更新:2021-10-11 11:00
  • 阅读:40967

uni-app 项目中发现$refs用不了

分类:uni-app

uni-app 项目中发现$refs用不了

2019-01-25 16:00 负责人:无 分享
已邀请:
4***@qq.com

4***@qq.com

这个垃圾uniapp,全他妈是坑

  • DCloud_UNI_GSQ

    看文档可以避免很多

    2021-05-28 17:14

  • Cohen

    回复 DCloud_UNI_GSQ: 确实,不过当下这个问题有什么好的解决方法吗

    2023-07-06 10:58

zhichiwangluo

zhichiwangluo

可以使用this.$nextTick(()=>{})

  • asdfd2323

    谢谢大佬

    2020-10-17 10:21

  • Cohen

    尝试了,打印出来是一个空对象

    2023-07-06 11:02

硝基西瓜

硝基西瓜

使用uni.selectorQuery, 类似原生DOM选择器

  • 1***@qq.com

    没用 这个方法功能太有限了

    2023-01-04 16:36

ezio_iron

ezio_iron

uni里面的内置组件(view text)不能使用ref 如果是自定义组件的话 可以用ref获取到
但是如果循环创建的自定义组件的话 ref也不能用了
这里可以推荐一个万金油方法 标签上id 然后
const query = uni.createSelectorQuery().in(this).select("#id")._component.$children

  • Cohen

    貌似也取不到值,打印出来也是一个 { }

    2023-07-06 11:14

DCloud_UNI_GSQ

DCloud_UNI_GSQ

uni-app 中可以使用$refs,但是需要注意的是在小程序和App平台不能引用 view 等内置组件。

  • 5***@qq.com

    那请问我要在应用内置的组件对象呢,你如我需要动态的设置image对象的src属性

    2019-05-20 15:57

  • 4***@qq.com

    还是不行啊 对view 使用ref="over" 结果 this.$refs.over 在真机上是undefined 使用H5元素也是 全部都是undefined 只有 自己的编写的组件 使用ref 可以取出来

    <es-line ref="line"></es-line> this.$refs.line.show() 这个可以

    2019-05-28 11:41

  • 1***@qq.com

    好坑啊,view 不能使用$refs 文档也不写说明。找半天原因

    2020-02-16 06:08

  • uniapp追随者

    试了下,微信小程序可以用。支付宝小程序中有点问题,但是可以改变方法获取,具体请看:解决 uni-app 自定义组件在支付宝小程序中无法使用 ref 的问题

    2020-07-03 15:28

  • aaafafaa

    回复 1***@qq.com: 想问下你这个怎么找到原因的。我现在无论用app的方法还是vue的都不行。

    2022-03-24 15:49

5***@qq.com

5***@qq.com

那请问我要在应用内置的组件对象呢,你如我需要动态的设置image对象的src属性

  • 4***@qq.com

    <image :src="walli.imgUrl" class="imagePic"></image>

    2019-09-24 01:01

NidhoggDLender

NidhoggDLender - I am Joking

这个是真的坑,浪费了好多时间

3***@qq.com

3***@qq.com - 90后IT

不是百分百vue的东西都能用

owlism

owlism

我找到一个解决方法了 https://uniapp.dcloud.io/api/ui/nodes-info

麻由

麻由

动态绑定 就不行了

uniapp追随者

uniapp追随者

SirW

SirW - 一个热爱前端编程的程序猿

$refs要在onReady之后才能用

1***@163.com

1***@163.com - 你吃了吗

这个坑 咋解决啊 各位

4***@qq.com

4***@qq.com

我做抖音小程序也遇到这个问题,开发工具里一点都正常,一旦真机使用$refs就报错
解决办法如下(困扰了我三天):
参考官网的“.sync修饰符

父组件:
<form-item ref="formItem" :isfromok.sync="isfromok"></form-item>

components: {  
    formItem  
},  
data() {  
    return {  
        isfromok: false     //是否填写表单  
    };  
},  

子组件(直接修改父组件的值):
let data = 123456;
_this.$emit('update:isfromok',datas);

在父组件内可直接判断isfromok的值是否符合预期,不用再使用$refs了
如果需要执行子组件的方法,可以使用watch监听来实现,希望能够帮助更多的人

MakerLZZ

MakerLZZ

@DCloud_UNI_GSQ uniapp 如何调用子组件内部方法呢 这个子组件可能是第三方的外部插件提供的自定义组件

2***@qq.com

2***@qq.com - noob

这个坑还在啊? 内置组件的定义是什么?除了自建的组件都叫内置的组件吗?

  • DCloud_UNI_GSQ

    内置组件指的是view这些,这个“坑坑”是由于这些组件不是vue组件,且和用户的代码不在同一个环境中(不在逻辑层而在视图层),获取不到。

    2020-10-13 20:03

  • Smile晴天

    回复 DCloud_UNI_GSQ: 请问,app里使用this.$refs获取dom,Echarts.init(this.$refs.PriceChartBig);报错undefined is not an object (evaluating 'dom.nodeName.toUpperCase')咋办

    2022-07-11 15:15

该问题目前已经被锁定, 无法添加新回复