this.$refs['xxx'][0],是什么意思,为啥加0呢?

发布于 2022-09-12 23:24:46 字数 1116 浏览 19 评论 0

父组件

<template>
<view class="user-order">
    <tabs :active="active" @change="changeShow" :config="{itemWidth: 125}">
        <tab v-for="(item, index) in order" :key="index" :title="item.name" :name="item.type">
            <order-list v-if="item.isShow" :order-type="item.type" :ref="'order' + item.type"></order-list>
        </tab>
    </tabs>
</view>
</template>

父组件有个方法这么写的。

this.$refs['order' + order[active].type][0].reflesh()

子组件下面是
<template>

<view>
    <view class="order-list">一堆,不写了</view>
    

</view>
</template>

            reflesh() {
                this.page = 1
                this.orderList = []
                this.status = loadingType.LOADING
                this.type = 0
                this.getOrderListFun();
            }

this.$refs['order' + order[active].type][0].reflesh() ,这个应该是调用了子组件的方法,刷新数据的意思。那为什么this.$refs'xxx',为什么跟一个数组下标0,有没有相关的refs教程,我百度了一下,没找到好理解的教程。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

夏雨凉 2022-09-19 23:24:46

当使用v-for的时候:

<ul>
  <li v-for="item in 10" ref="test" :key="item"></li>
</ul>

this.$refs.test是个数组;this.$refs.test[0]就是第一个li

旧城空念 2022-09-19 23:24:46

当你使用的ref是v-for出来的时候

北座城市 2022-09-19 23:24:46

0表示数组第0个元素,说明取得的结果是以数组展示的,数组里面是个对象,这种东西要领文这个数据的格式去解析下数据格式就知道了。

已参与了 SegmengtFault 思否 「问答」打卡,欢迎正在阅读的你也加入。

软的没边 2022-09-19 23:24:46

直接看代码比你去找教程更快,给你截取vue源码关于ref的处理

function registerRef (vnode, isRemoval) {
    var key = vnode.data.ref;
    if (!isDef(key)) { return }

    var vm = vnode.context;
    var ref = vnode.componentInstance || vnode.elm;
    var refs = vm.$refs;
    if (isRemoval) {
      if (Array.isArray(refs[key])) {
        remove(refs[key], ref);
      } else if (refs[key] === ref) {
        refs[key] = undefined;
      }
    } else {
      if (vnode.data.refInFor) {
        if (!Array.isArray(refs[key])) {
          refs[key] = [ref];
        } else if (refs[key].indexOf(ref) < 0) {
          // $flow-disable-line
          refs[key].push(ref);
        }
      } else {
        refs[key] = ref;
      }
    }
  }

可以看到当ref是在for循环中时,ref所绑定的key对应的value是以数组形式存储的

已参与了 SegmentFault 思否「问答」打卡,欢迎正在阅读的你也加入

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文