我用Vuetify创建了一个简单的v-dialog.它将v-slot:activator用于解构数据,即{on, attrs }.虽然我能理解on部分,但我不明白attrs的目的是什么?如果我删除它,对话框仍然可以正常工作.它是如何工作的,为什么?

下面是Vuetify文档中的一些基本示例:

<template>
  <div class="text-center">
    <v-dialog
      v-model="dialog"
      width="500"
    >
      <template v-slot:activator="{ on, attrs }">
        <v-btn
          color="red lighten-2"
          dark
          v-bind="attrs"
          v-on="on"
        >
          Click Me
        </v-btn>
      </template>

      <v-card>
        <v-card-title class="text-h5 grey lighten-2">
          Privacy Policy
        </v-card-title>

        <v-card-text>
          Lorem ipsum dolor sit amet...
        </v-card-text>

      </v-card>
    </v-dialog>
  </div>
</template>

<script>
  export default {
    data () {
      return {
      }
    },
  }
</script>

推荐答案

它的目的是为您提供一组属性/props ,您可以轻松地使用v-bind="attrs"(使用object binding syntax)将其绑定到您 Select 作为激活器的组件

v-dialog的情况下,默认实现activatable mixin和generates some ARIA attribute生成其内容,但使用mixin的组件可以覆盖或扩展它(例如v-menu does)

Vue.js相关问答推荐

如何禁用Vuetify v—stepper操作按钮

在预渲染模式下部署 nuxt 3 时出错

Vue 3组合式API如何测试是否发出正确的事件

我如何使用 vuejs 在我的 url 中编码一个令牌

我可以在打印 HTML 页面时使用作用域 CSS 吗? (使用 Laravel 和 Vue.js)

有条件地在 Vue 中添加一个 CSS 类

[Vue 警告]:渲染函数中的错误:TypeError:无法读取属性 'first_name' of null

为什么 Vue 路由/Webpack 开发服务器现在在页面刷新时显示无法获取/路径?

如何在 vue 3 脚本设置中的组件上使用 v-model

使用 Vue.js (cdn) 在特定元素上切换显示/隐藏

我可以避免使用 Vue.js 组件的重复样式吗?

'不提供名为'createRouter'的导出'' vue 3、vite 和 vue-router

如何让 vuetify 数据表在卡片内时跨越容器的整个宽度?

如何在 vue.js 2 上循环对象观察者?

Bootstrap-vue:如何将数据传递给模态?

从 vuex 存储访问 $vuetify 实例属性

Vue 2.0 设置路由 - 不要使用new来产生副作用

在 vue js 中的何处以及如何存储 API 端点?

Vue-i18n - 无法读取未定义的属性配置

使用 vue.js 获取调用元素