如何在不展开包装的情况下将ref传递给方法/函数参数?

DarkLite1

我们正在使用Vue Composition API,并且希望将ref对象(而不仅仅是值)作为函数的参数传递。一些代码来阐明:

import { defineComponent, ref } from '@vue/composition-api'

export default defineComponent({
  setup() {
    const driverId = ref()
    const truckId = ref()

    const clearDriverId = () => {
      driverId.value = null
    }

以上优良工程的代码,但我们需要复制功能clearDriverIdtruckId过。这就是为什么我们要创建以下内容:

    const clearField = (field: Ref) => {
      field.value = null
    }

从模板访问:

<q-input
  label="Driver ID"
  v-model="driverId"
>
  <template v-slot:append>
    <q-icon
      name="close"
      @click.stop="clearField(driverId)"
    />
  </template>
</q-input>

当然,这是行不通的,因为ref driverId当从模板传递给函数时,它们会被解包。将完整ref对象传递给函数的正确方法是什么

东尼19

一种解决方案setup()是返回包含所有的对象/字典ref(防止它们自动展开),然后可以将其用于将特定ref的函数传递给您的函数。toMyRefs()返回字典ref以及ref字典的实用程序(下面)将有助于最大程度地减少重复代码:

<template>
  <div>
    <button @click="clearField(myRefs.driverId)">Clear driverId</button>
    <button @click="clearField(myRefs.truckId)">Clear truckId</button>
    <button @click="clearField(myRefs.carId)">Clear carId</button>
    <button @click="clearField(myRefs.trainId)">Clear trainId</button>

    <pre>
      driverId: {{ driverId }}
      truckId: {{ truckId }}
      carId: {{ carId }}
      trainId: {{ trainId }}
    </pre>
  </div>
</template>

<script>
import { defineComponent, ref } from '@vue/composition-api'

const toMyRefs = refs => ({
  ...refs,
  myRefs: {
    ...refs
  }
})

export default defineComponent({
  setup() {
    const driverId = ref(1)
    const truckId = ref(2)
    const carId = ref(3)
    const trainId = ref(4)

    const clearField = (field) => {
      field.value = 0
    }

    return {
      ...toMyRefs({
        driverId,
        truckId,
        carId,
        trainId,
      }),
      clearField,
    }
  }
})
</script>

演示

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在不影响对象的情况下将对象作为参数传递给方法?

如何在不覆盖TTY的情况下将密码传递给su / sudo / ssh?

如何在不定义数组大小的情况下将数组传递给GO函数?

装饰器如何在不更改其签名的情况下将变量传递给函数?

如何在不更改上下文的情况下将参数数组传递给函数?

如何在不牺牲性能的情况下将函数作为参数传递给Julia中的其他函数?

如何在不覆盖数据源参数的情况下将附加参数传递给Kendo模板

如何在不覆盖父范围的情况下将参数传递给指令?

如何在不展开包装的情况下将Option <Result <T,Error >>转换为Option <T>?

如何在期望两个参数的情况下仅将一个参数传递给函数?

如何在不创建新函数的情况下将参数传递给React + Typescript中的回调?

如何在不进行for循环的情况下将任意数量的参数传递给R函数?

如何在不评估变量的情况下将变量传递给自定义组件?

如何在不丢失“ event”属性的情况下将参数传递给事件侦听器的回调函数?

R如何在不返回变量的情况下将变量从一个对象传递给函数?

如何在不显示URL的情况下将参数传递给Angularjs的router-ui?

C ++:如何在不执行功能的情况下将参数作为参数传递?

如何在不调用的情况下将值传递给python函数?

如何在不复制列表的情况下将列表传递给线程而不破坏它

如何在不带参数的情况下将大数据集传递给函数

如何在不调用函数的情况下将参数传递给函数?

如何在不改变原始数组的情况下将数组传递给函数?

如何在不重复自己的情况下将某些参数传递给PowerShell cmdlet?

如何在不触发提示的情况下将密码短语传递给ssh-add?

如何在没有for循环的情况下将参数传递给Bash脚本变量?

如何在不访问Java母函数的情况下将参数传递给回调

spring如何在不传递参数的情况下实例化@Autowired构造函数

如何在重定向的情况下使用烧瓶将参数传递给 HTML 表单

如何在不格式化的情况下将字符串传递给程序?