直接跳到内容
本页目录

内置的特殊 Attributes

key

WARNING

请注意,这是一个预留的语法,当前版本未实现。

key 这个特殊的 attribute 主要作为 Vue 的虚拟 DOM 算法提示,在比较新旧节点列表时用于识别 vnode。

  • 预期number | string | symbol

  • 详细信息

    在没有 key 的情况下,Vue 将使用一种最小化元素移动的算法,并尽可能地就地更新/复用相同类型的元素。如果传了 key,则将根据 key 的变化顺序来重新排列元素,并且将始终移除/销毁 key 已经不存在的元素。

    同一个父元素下的子元素必须具有唯一的 key。重复的 key 将会导致渲染异常。

    最常见的用例是与 v-for 结合:

    template
    <ul>
      <li v-for="item in items" :key="item.id">...</li>
    </ul>

    也可以用于强制替换一个元素/组件而不是复用它。当你想这么做时它可能会很有用:

    • 在适当的时候触发组件的生命周期钩子
    • 触发过渡

    举例来说:

    template
    <transition>
      <span :key="text">{{ text }}</span>
    </transition>

    text 变化时,<span> 总是会被替换而不是更新,因此 transition 将会被触发。

  • 参考指南 - 列表渲染 - 通过 key 管理状态

ref

用于注册模板引用

  • 预期string | Function

  • 详细信息

    使用组合式 API,引用将存储在与名字匹配的 ref 里:

    vue
    <template>
      <p ref="p.value">hello</p>
    </template>
    <script lang='py'>
    from vuepy import ref
    
    p = ref(None)
    </script>

    如果用于普通 DOM 元素(暂不支持),引用将是元素本身;如果用于子组件,引用将是子组件的实例。

关于 ref 注册时机的重要说明:因为 ref 本身是作为渲染函数的结果来创建的,必须等待组件挂载后才能对它进行访问。

is

WARNING

请注意,这是一个预留的语法,当前版本未实现。

用于绑定动态组件

  • 预期string | Component

  • 用于原生元素 3.1+

    is attribute 用于原生 HTML 元素时,它将被当作 Customized built-in element,其为原生 web 平台的特性。

    但是,在这种用例中,你可能需要 Vue 用其组件来替换原生元素,如 DOM 内模板解析注意事项所述。你可以在 is attribute 的值中加上 vue: 前缀,这样 Vue 就会把该元素渲染为 Vue 组件:

    template
    <table>
      <tr is="vue:my-row-component"></tr>
    </table>
  • 参考

内置的特殊 Attributes已经加载完毕