嵌套激活中的“...”实际上是如何工作的? (Vuetify)

Posted

技术标签:

【中文标题】嵌套激活中的“...”实际上是如何工作的? (Vuetify)【英文标题】:How is the "..." in nested activation actually working? (Vuetify) 【发布时间】:2020-04-13 09:35:05 【问题描述】:

在嵌套激活的东西中,我们有这个:

v-on=" ...tooltip, ...menu "> 不是v-on=" tooltip, menu ">

即:

<template>

  <v-tooltip>

    <template v-slot:activator="on : tooltip">
      <v-menu>

        <template v-slot:activator=" on : menu ">

          <v-btn  v-on=" ...tooltip, ...menu ">
          </v-btn>
        </template>

          <v-card>

          </v-card>

        </v-menu>
    </template>

        tooltip_message 

    </v-tooltip>

</template>

请参阅https://vuetifyjs.com/en/getting-started/releases-and-migrations 了解替代示例

似乎需要...。这就是“解构和重组”的方法。即Using v-tooltip inside v-menu activator in vuetify 2.0

这里的文档 https://vuejs.org/v2/guide/components-slots.html#Destructuring-Slot-Props 不要提及任何关于“...”的内容。

... 在这种情况下的真正含义是什么?

【问题讨论】:

它解压对象中的任何内容。将其视为通过将对象的嵌套级别降低 1 来展平对象。 【参考方案1】:

首先,这是一个 javascript 构造,而不是 Vue 构造。

考虑以下情况,其中tooltipmenu 都是对象:

const obj =  ...tooltip, ...menu 

这会创建一个新对象。复制tooltip 的属性,然后复制menu 的属性。最终结果是将两个对象合并为一个新对象。如果menu 中的属性同名,则它们优先于tooltip 中的属性。

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Spread_syntax#Spread_in_object_literals

对比一下:

const obj =  tooltip, menu 

这只是这个的简写:

const obj =  tooltip: tooltip, menu: menu 

我们仍在创建一个新对象,但这次它只有两个属性,称为tooltipmenu。原始的两个对象用作这些属性的值。

您示例中的v-on 的工作方式完全相同。

【讨论】:

谢谢!看起来扩展语法对于 ES6 来说是“新的”。 codeburst.io/javascript-es6-the-spread-syntax-f5c35525f754

以上是关于嵌套激活中的“...”实际上是如何工作的? (Vuetify)的主要内容,如果未能解决你的问题,请参考以下文章

参数参数如何为这些嵌套函数工作?

如何在ScrollView中嵌套ListView

DeConvNet 中的 unpooling 和 deconvolution 是如何工作的

如何更改嵌套列表中的元素?

如何单击嵌套在数据网格内的数据网格中的复选框

神经网络和深度学习之感知器工作原理