{
  "version": 1.1,
  "tags": [
    {
      "name": "Transition",
      "description": {
        "kind": "markdown",
        "value": "\n為**單個**元素或組件提供動畫過渡效果。\n\n- **Props**\n\n  ```ts\n  interface TransitionProps {\n    /**\n     * 用於自動生成過渡 CSS class 名。\n     * 例如 `name: 'fade'` 將自動擴展為 `.fade-enter`、\n     * `.fade-enter-active` 等。\n     */\n    name?: string\n    /**\n     * 是否應用 CSS 過渡 class。\n     * 默認：true\n     */\n    css?: boolean\n    /**\n     * 指定要等待的過渡事件類型\n     * 來確定過渡結束的時間。\n     * 默認情況下會自動檢測\n     * 持續時間較長的類型。\n     */\n    type?: 'transition' | 'animation'\n    /**\n     * 顯式指定過渡的持續時間。\n     * 默認情況下是等待過渡效果的根元素的第一個 `transitionend`\n     * 或`animationend`事件。\n     */\n    duration?: number | { enter: number; leave: number }\n    /**\n     * 控制離開/進入過渡的時序。\n     * 默認情況下是同時的。\n     */\n    mode?: 'in-out' | 'out-in' | 'default'\n    /**\n     * 是否對初始渲染使用過渡。\n     * 默認：false\n     */\n    appear?: boolean\n\n    /**\n     * 用於自定義過渡 class 的 prop。\n     * 在模板中使用短橫線命名，例如：enter-from-class=\"xxx\"\n     */\n    enterFromClass?: string\n    enterActiveClass?: string\n    enterToClass?: string\n    appearFromClass?: string\n    appearActiveClass?: string\n    appearToClass?: string\n    leaveFromClass?: string\n    leaveActiveClass?: string\n    leaveToClass?: string\n  }\n  ```\n\n- **事件**\n\n  - `@before-enter`\n  - `@before-leave`\n  - `@enter`\n  - `@leave`\n  - `@appear`\n  - `@after-enter`\n  - `@after-leave`\n  - `@after-appear`\n  - `@enter-cancelled`\n  - `@leave-cancelled` (`v-show` only)\n  - `@appear-cancelled`\n\n- **示例**\n\n  簡單元素：\n\n  ```html\n  <Transition>\n    <div v-if=\"ok\">toggled content</div>\n  </Transition>\n  ```\n\n  通過改變 `key` 屬性來強制過度執行：\n  \n  ```html\n  <Transition>\n    <div :key=\"text\">{{ text }}</div>\n  </Transition>\n  ```\n\n  動態組件，初始渲染時帶有過渡模式 + 動畫出現：\n\n  ```html\n  <Transition name=\"fade\" mode=\"out-in\" appear>\n    <component :is=\"view\"></component>\n  </Transition>\n  ```\n\n  監聽過渡事件：\n\n  ```html\n  <Transition @after-enter=\"onTransitionComplete\">\n    <div v-show=\"ok\">toggled content</div>\n  </Transition>\n  ```\n\n- **參考**：[`<Transition>` 指南](https://cn.vuejs.org/guide/built-ins/transition.html)\n"
      },
      "references": [
        {
          "name": "en",
          "url": "https://vuejs.org/api/built-in-components.html#transition"
        },
        {
          "name": "zh-cn",
          "url": "https://cn.vuejs.org/api/built-in-components.html#transition"
        },
        {
          "name": "ja",
          "url": "https://ja.vuejs.org/api/built-in-components.html#transition"
        },
        {
          "name": "ua",
          "url": "https://ua.vuejs.org/api/built-in-components.html#transition"
        },
        {
          "name": "fr",
          "url": "https://fr.vuejs.org/api/built-in-components.html#transition"
        },
        {
          "name": "ko",
          "url": "https://ko.vuejs.org/api/built-in-components.html#transition"
        }
      ]
    },
    {
      "name": "TransitionGroup",
      "description": {
        "kind": "markdown",
        "value": "\n為列表中的**多個**元素或組件提供過渡效果。\n\n- **Props**\n\n  `<TransitionGroup>` 擁有與 `<Transition>` 除了 `mode` 以外所有的 props，並增加了兩個額外的 props：\n\n  ```ts\n  interface TransitionGroupProps extends Omit<TransitionProps, 'mode'> {\n    /**\n     * 如果未定義，則渲染為片段 (fragment)。\n     */\n    tag?: string\n    /**\n     * 用於自定義過渡期間被應用的 CSS class。\n     * 在模板中使用 kebab-case，例如 move-class=\"xxx\"\n     */\n    moveClass?: string\n  }\n  ```\n\n- **事件**\n\n  `<TransitionGroup>` 拋出與 `<Transition>` 相同的事件。\n\n- **詳細信息**\n\n  默認情況下，`<TransitionGroup>` 不會渲染一個容器 DOM 元素，但是可以通過 `tag` prop 啟用。\n\n  注意，每個 `<transition-group>` 的子節點必須有[**獨立的 key**](https://cn.vuejs.org/guide/essentials/list.html#maintaining-state-with-key)，動畫才能正常工作。\n\n  `<TransitionGroup>` 支持通過 CSS transform 控制移動效果。當一個子節點在屏幕上的位置在更新之後發生變化時，它會被添加一個使其位移的 CSS class (基於 `name` attribute 推導，或使用 `move-class` prop 顯式配置)。如果使其位移的 class 被添加時 CSS 的 `transform` 屬性是“可過渡的”，那麼該元素會基於 [FLIP 技巧](https://aerotwist.com/blog/flip-your-animations/)平滑地到達動畫終點。\n\n- **示例**\n\n  ```html\n  <TransitionGroup tag=\"ul\" name=\"slide\">\n    <li v-for=\"item in items\" :key=\"item.id\">\n      {{ item.text }}\n    </li>\n  </TransitionGroup>\n  ```\n\n- **參考**：[指南 - TransitionGroup](https://cn.vuejs.org/guide/built-ins/transition-group.html)\n"
      },
      "references": [
        {
          "name": "en",
          "url": "https://vuejs.org/api/built-in-components.html#transitiongroup"
        },
        {
          "name": "zh-cn",
          "url": "https://cn.vuejs.org/api/built-in-components.html#transitiongroup"
        },
        {
          "name": "ja",
          "url": "https://ja.vuejs.org/api/built-in-components.html#transitiongroup"
        },
        {
          "name": "ua",
          "url": "https://ua.vuejs.org/api/built-in-components.html#transitiongroup"
        },
        {
          "name": "fr",
          "url": "https://fr.vuejs.org/api/built-in-components.html#transitiongroup"
        },
        {
          "name": "ko",
          "url": "https://ko.vuejs.org/api/built-in-components.html#transitiongroup"
        }
      ]
    },
    {
      "name": "KeepAlive",
      "description": {
        "kind": "markdown",
        "value": "\n緩存包裹在其中的動態切換組件。\n\n- **Props**\n\n  ```ts\n  interface KeepAliveProps {\n    /**\n     * 如果指定，則只有與 `include` 名稱\n     * 匹配的組件才會被緩存。\n     */\n    include?: MatchPattern\n    /**\n     * 任何名稱與 `exclude`\n     * 匹配的組件都不會被緩存。\n     */\n    exclude?: MatchPattern\n    /**\n     * 最多可以緩存多少組件實例。\n     */\n    max?: number | string\n  }\n\n  type MatchPattern = string | RegExp | (string | RegExp)[]\n  ```\n\n- **詳細信息**\n\n  `<KeepAlive>` 包裹動態組件時，會緩存不活躍的組件實例，而不是銷燬它們。\n\n  任何時候都只能有一個活躍組件實例作為 `<KeepAlive>` 的直接子節點。\n\n  當一個組件在 `<KeepAlive>` 中被切換時，它的 `activated` 和 `deactivated` 生命週期鉤子將被調用，用來替代 `mounted` 和 `unmounted`。這適用於 `<KeepAlive>` 的直接子節點及其所有子孫節點。\n\n- **示例**\n\n  基本用法：\n\n  ```html\n  <KeepAlive>\n    <component :is=\"view\"></component>\n  </KeepAlive>\n  ```\n\n  與 `v-if` / `v-else` 分支一起使用時，同一時間只能有一個組件被渲染：\n\n  ```html\n  <KeepAlive>\n    <comp-a v-if=\"a > 1\"></comp-a>\n    <comp-b v-else></comp-b>\n  </KeepAlive>\n  ```\n\n  與 `<Transition>` 一起使用：\n\n  ```html\n  <Transition>\n    <KeepAlive>\n      <component :is=\"view\"></component>\n    </KeepAlive>\n  </Transition>\n  ```\n\n  使用 `include` / `exclude`：\n\n  ```html\n  <!-- 用逗號分隔的字符串 -->\n  <KeepAlive include=\"a,b\">\n    <component :is=\"view\"></component>\n  </KeepAlive>\n\n  <!-- 正則表達式 (使用 `v-bind`) -->\n  <KeepAlive :include=\"/a|b/\">\n    <component :is=\"view\"></component>\n  </KeepAlive>\n\n  <!-- 數組 (使用 `v-bind`) -->\n  <KeepAlive :include=\"['a', 'b']\">\n    <component :is=\"view\"></component>\n  </KeepAlive>\n  ```\n\n  使用 `max`：\n\n  ```html\n  <KeepAlive :max=\"10\">\n    <component :is=\"view\"></component>\n  </KeepAlive>\n  ```\n\n- **參考**：[指南 - KeepAlive](https://cn.vuejs.org/guide/built-ins/keep-alive.html)\n"
      },
      "references": [
        {
          "name": "en",
          "url": "https://vuejs.org/api/built-in-components.html#keepalive"
        },
        {
          "name": "zh-cn",
          "url": "https://cn.vuejs.org/api/built-in-components.html#keepalive"
        },
        {
          "name": "ja",
          "url": "https://ja.vuejs.org/api/built-in-components.html#keepalive"
        },
        {
          "name": "ua",
          "url": "https://ua.vuejs.org/api/built-in-components.html#keepalive"
        },
        {
          "name": "fr",
          "url": "https://fr.vuejs.org/api/built-in-components.html#keepalive"
        },
        {
          "name": "ko",
          "url": "https://ko.vuejs.org/api/built-in-components.html#keepalive"
        }
      ]
    },
    {
      "name": "Teleport",
      "description": {
        "kind": "markdown",
        "value": "\n將其插槽內容渲染到 DOM 中的另一個位置。\n\n- **Props**\n\n  ```ts\n  interface TeleportProps {\n    /**\n     * 必填項。指定目標容器。\n     * 可以是選擇器或實際元素。\n     */\n    to: string | HTMLElement\n    /**\n     * 當值為 `true` 時，內容將保留在其原始位置\n     * 而不是移動到目標容器中。\n     * 可以動態更改。\n     */\n    disabled?: boolean\n  }\n  ```\n\n- **示例**\n\n  指定目標容器：\n\n  ```html\n  <teleport to=\"#some-id\" />\n  <teleport to=\".some-class\" />\n  <teleport to=\"[data-teleport]\" />\n  ```\n\n  有條件地禁用：\n\n  ```html\n  <teleport to=\"#popup\" :disabled=\"displayVideoInline\">\n    <video src=\"./my-movie.mp4\">\n  </teleport>\n  ```\n\n- **參考**：[指南 - Teleport](https://cn.vuejs.org/guide/built-ins/teleport.html)\n"
      },
      "references": [
        {
          "name": "en",
          "url": "https://vuejs.org/api/built-in-components.html#teleport"
        },
        {
          "name": "zh-cn",
          "url": "https://cn.vuejs.org/api/built-in-components.html#teleport"
        },
        {
          "name": "ja",
          "url": "https://ja.vuejs.org/api/built-in-components.html#teleport"
        },
        {
          "name": "ua",
          "url": "https://ua.vuejs.org/api/built-in-components.html#teleport"
        },
        {
          "name": "fr",
          "url": "https://fr.vuejs.org/api/built-in-components.html#teleport"
        },
        {
          "name": "ko",
          "url": "https://ko.vuejs.org/api/built-in-components.html#teleport"
        }
      ]
    },
    {
      "name": "Suspense",
      "description": {
        "kind": "markdown",
        "value": "\n用於協調對組件樹中嵌套的異步依賴的處理。\n\n- **Props**\n\n  ```ts\n  interface SuspenseProps {\n    timeout?: string | number\n  }\n  ```\n\n- **事件**\n\n  - `@resolve`\n  - `@pending`\n  - `@fallback`\n\n- **詳細信息**\n\n  `<Suspense>` 接受兩個插槽：`#default` 和 `#fallback`。它將在內存中渲染默認插槽的同時展示後備插槽內容。\n\n  如果在渲染時遇到異步依賴項 ([異步組件](https://cn.vuejs.org/guide/components/async.html)和具有 [`async setup()`](https://cn.vuejs.org/guide/built-ins/suspense.html#async-setup) 的組件)，它將等到所有異步依賴項解析完成時再顯示默認插槽。\n\n- **參考**：[指南 - Suspense](https://cn.vuejs.org/guide/built-ins/suspense.html)\n"
      },
      "references": [
        {
          "name": "en",
          "url": "https://vuejs.org/api/built-in-components.html#suspense"
        },
        {
          "name": "zh-cn",
          "url": "https://cn.vuejs.org/api/built-in-components.html#suspense"
        },
        {
          "name": "ja",
          "url": "https://ja.vuejs.org/api/built-in-components.html#suspense"
        },
        {
          "name": "ua",
          "url": "https://ua.vuejs.org/api/built-in-components.html#suspense"
        },
        {
          "name": "fr",
          "url": "https://fr.vuejs.org/api/built-in-components.html#suspense"
        },
        {
          "name": "ko",
          "url": "https://ko.vuejs.org/api/built-in-components.html#suspense"
        }
      ]
    },
    {
      "name": "component",
      "description": {
        "kind": "markdown",
        "value": "\n一個用於渲染動態組件或元素的“元組件”。\n\n- **Props**\n\n  ```ts\n  interface DynamicComponentProps {\n    is: string | Component\n  }\n  ```\n\n- **詳細信息**\n\n  要渲染的實際組件由 `is` prop 決定。\n\n  - 當 `is` 是字符串，它既可以是 HTML 標籤名也可以是組件的註冊名。\n\n  - 或者，`is` 也可以直接綁定到組件的定義。\n\n- **示例**\n\n  按註冊名渲染組件 (選項式 API)：\n\n  ```vue\n  <script>\n  import Foo from './Foo.vue'\n  import Bar from './Bar.vue'\n\n  export default {\n    components: { Foo, Bar },\n    data() {\n      return {\n        view: 'Foo'\n      }\n    }\n  }\n  </script>\n\n  <template>\n    <component :is=\"view\" />\n  </template>\n  ```\n\n  按定義渲染組件 (`<script setup>` 組合式 API)：\n\n  ```vue\n  <script setup>\n  import Foo from './Foo.vue'\n  import Bar from './Bar.vue'\n  </script>\n\n  <template>\n    <component :is=\"Math.random() > 0.5 ? Foo : Bar\" />\n  </template>\n  ```\n\n  渲染 HTML 元素：\n\n  ```html\n  <component :is=\"href ? 'a' : 'span'\"></component>\n  ```\n\n  [內置組件](./built-in-components)都可以傳遞給 `is`，但是如果想通過名稱傳遞則必須先對其進行註冊。舉例來說：\n\n  ```vue\n  <script>\n  import { Transition, TransitionGroup } from 'vue'\n\n  export default {\n    components: {\n      Transition,\n      TransitionGroup\n    }\n  }\n  </script>\n\n  <template>\n    <component :is=\"isGroup ? 'TransitionGroup' : 'Transition'\">\n      ...\n    </component>\n  </template>\n  ```\n\n  如果將組件本身傳遞給 `is` 而不是其名稱，則不需要註冊，例如在 `<script setup>` 中。\n\n  如果在 `<component>` 標籤上使用 `v-model`，模板編譯器會將其擴展為 `modelValue` prop 和 `update:modelValue` 事件監聽器，就像對任何其他組件一樣。但是，這與原生 HTML 元素不兼容，例如 `<input>` 或 `<select>`。因此，在動態創建的原生元素上使用 `v-model` 將不起作用：\n\n  ```vue\n  <script setup>\n  import { ref } from 'vue'\n\n  const tag = ref('input')\n  const username = ref('')\n  </script>\n\n  <template>\n    <!-- 由於 'input' 是原生 HTML 元素，因此這個 v-model 不起作用 -->\n    <component :is=\"tag\" v-model=\"username\" />\n  </template>\n  ```\n\n  在實踐中，這種極端情況並不常見，因為原生表單字段通常包裹在實際應用的組件中。如果確實需要直接使用原生元素，那麼你可以手動將 `v-model` 拆分為 attribute 和事件。\n\n- **參考**：[動態組件](https://cn.vuejs.org/guide/essentials/component-basics.html#dynamic-components)\n"
      },
      "references": [
        {
          "name": "en",
          "url": "https://vuejs.org/api/built-in-special-elements.html#component"
        },
        {
          "name": "zh-cn",
          "url": "https://cn.vuejs.org/api/built-in-special-elements.html#component"
        },
        {
          "name": "ja",
          "url": "https://ja.vuejs.org/api/built-in-special-elements.html#component"
        },
        {
          "name": "ua",
          "url": "https://ua.vuejs.org/api/built-in-special-elements.html#component"
        },
        {
          "name": "fr",
          "url": "https://fr.vuejs.org/api/built-in-special-elements.html#component"
        },
        {
          "name": "ko",
          "url": "https://ko.vuejs.org/api/built-in-special-elements.html#component"
        }
      ]
    },
    {
      "name": "slot",
      "description": {
        "kind": "markdown",
        "value": "\n表示模板中的插槽內容出口。\n\n- **Props**\n\n  ```ts\n  interface SlotProps {\n    /**\n     * 任何傳遞給 <slot> 的 prop 都可以作為作用域插槽\n     * 的參數傳遞\n     */\n    [key: string]: any\n    /**\n     * 保留，用於指定插槽名。\n     */\n    name?: string\n  }\n  ```\n\n- **詳細信息**\n\n  `<slot>` 元素可以使用 `name` attribute 來指定插槽名。當沒有指定 `name` 時，將會渲染默認插槽。傳遞給插槽元素的附加 attributes 將作為插槽 props，傳遞給父級中定義的作用域插槽。\n\n  元素本身將被其所匹配的插槽內容替換。\n\n  Vue 模板裡的 `<slot>` 元素會被編譯到 JavaScript，因此不要與[原生 `<slot>` 元素](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/slot)進行混淆。\n\n- **參考**：[組件 - 插槽](https://cn.vuejs.org/guide/components/slots.html)\n"
      },
      "references": [
        {
          "name": "en",
          "url": "https://vuejs.org/api/built-in-special-elements.html#slot"
        },
        {
          "name": "zh-cn",
          "url": "https://cn.vuejs.org/api/built-in-special-elements.html#slot"
        },
        {
          "name": "ja",
          "url": "https://ja.vuejs.org/api/built-in-special-elements.html#slot"
        },
        {
          "name": "ua",
          "url": "https://ua.vuejs.org/api/built-in-special-elements.html#slot"
        },
        {
          "name": "fr",
          "url": "https://fr.vuejs.org/api/built-in-special-elements.html#slot"
        },
        {
          "name": "ko",
          "url": "https://ko.vuejs.org/api/built-in-special-elements.html#slot"
        }
      ]
    },
    {
      "name": "template",
      "description": {
        "kind": "markdown",
        "value": "\n當我們想要使用內置指令而不在 DOM 中渲染元素時，`<template>` 標籤可以作為佔位符使用。\n\n- **詳細信息**：\n\n  對 `<template>` 的特殊處理只有在它與以下任一指令一起使用時才會被觸發：\n\n  - `v-if`、`v-else-if` 或 `v-else`\n  - `v-for`\n  - `v-slot`\n\n  如果這些指令都不存在，那麼它將被渲染成一個[原生的 `<template>` 元素](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/template)。\n\n  帶有 `v-for` 的 `<template>` 也可以有一個 [`key` 屬性](https://cn.vuejs.org/api/built-in-special-attributes.html#key)。所有其他的屬性和指令都將被丟棄，因為沒有相應的元素，它們就沒有意義。\n\n  單文件組件使用[頂層的 `<template>` 標籤](https://cn.vuejs.org/api/sfc-spec.html#language-blocks)來包裹整個模板。這種用法與上面描述的 `<template>` 使用方式是有區別的。該頂層標籤不是模板本身的一部分，不支持指令等模板語法。\n\n- **參考**：\n  - [指南 - `<template>` 上的 `v-if`](https://cn.vuejs.org/guide/essentials/conditional.html#v-if-on-template)\n  - [指南 - `<template>` 上的 `v-for`](https://cn.vuejs.org/guide/essentials/list.html#v-for-on-template)\n  - [指南 - 具名插槽](https://cn.vuejs.org/guide/components/slots.html#named-slots)\n"
      },
      "references": [
        {
          "name": "en",
          "url": "https://vuejs.org/api/built-in-special-elements.html#template"
        },
        {
          "name": "zh-cn",
          "url": "https://cn.vuejs.org/api/built-in-special-elements.html#template"
        },
        {
          "name": "ja",
          "url": "https://ja.vuejs.org/api/built-in-special-elements.html#template"
        },
        {
          "name": "ua",
          "url": "https://ua.vuejs.org/api/built-in-special-elements.html#template"
        },
        {
          "name": "fr",
          "url": "https://fr.vuejs.org/api/built-in-special-elements.html#template"
        },
        {
          "name": "ko",
          "url": "https://ko.vuejs.org/api/built-in-special-elements.html#template"
        }
      ]
    }
  ],
  "globalAttributes": [
    {
      "name": "v-text",
      "description": {
        "kind": "markdown",
        "value": "\n更新元素的文本內容。\n\n- **期望的綁定值類型：**`string`\n\n- **詳細信息**\n\n  `v-text` 通過設置元素的 [textContent](https://developer.mozilla.org/en-US/docs/Web/API/Node/textContent) 屬性來工作，因此它將覆蓋元素中所有現有的內容。如果你需要更新 `textContent` 的部分，應該使用 [mustache interpolations](https://cn.vuejs.org/guide/essentials/template-syntax.html#text-interpolation) 代替。\n\n- **示例**\n\n  ```html\n  <span v-text=\"msg\"></span>\n  <!-- 等同於 -->\n  <span>{{msg}}</span>\n  ```\n\n- **參考**：[模板語法 - 文本插值](https://cn.vuejs.org/guide/essentials/template-syntax.html#text-interpolation)\n"
      },
      "references": [
        {
          "name": "en",
          "url": "https://vuejs.org/api/built-in-directives.html#v-text"
        },
        {
          "name": "zh-cn",
          "url": "https://cn.vuejs.org/api/built-in-directives.html#v-text"
        },
        {
          "name": "ja",
          "url": "https://ja.vuejs.org/api/built-in-directives.html#v-text"
        },
        {
          "name": "ua",
          "url": "https://ua.vuejs.org/api/built-in-directives.html#v-text"
        },
        {
          "name": "fr",
          "url": "https://fr.vuejs.org/api/built-in-directives.html#v-text"
        },
        {
          "name": "ko",
          "url": "https://ko.vuejs.org/api/built-in-directives.html#v-text"
        }
      ]
    },
    {
      "name": "v-html",
      "description": {
        "kind": "markdown",
        "value": "\n更新元素的 [innerHTML](https://developer.mozilla.org/en-US/docs/Web/API/Element/innerHTML)。\n\n- **期望的綁定值類型：**`string`\n\n- **詳細信息**\n\n `v-html` 的內容直接作為普通 HTML 插入—— Vue 模板語法是不會被解析的。如果你發現自己正打算用 `v-html` 來編寫模板，不如重新想想怎麼使用組件來代替。\n\n ::: warning 安全說明\n 在你的站點上動態渲染任意的 HTML 是非常危險的，因為它很容易導致 [XSS 攻擊](https://en.wikipedia.org/wiki/Cross-site_scripting)。請只對可信內容使用 HTML 插值，**絕不要**將用戶提供的內容作為插值\n  :::\n\n 在[單文件組件](https://cn.vuejs.org/guide/scaling-up/sfc.html)，`scoped` 樣式將不會作用於 `v-html` 裡的內容，因為 HTML 內容不會被 Vue 的模板編譯器解析。如果你想讓 `v-html` 的內容也支持 scoped CSS，你可以使用 [CSS modules](./sfc-css-features#css-modules) 或使用一個額外的全局 `<style>` 元素，手動設置類似 BEM 的作用域策略。\n\n- **示例：**\n\n  ```html\n  <div v-html=\"html\"></div>\n  ```\n\n- **參考**：[模板語法 - 原始 HTML](https://cn.vuejs.org/guide/essentials/template-syntax.html#raw-html)\n"
      },
      "references": [
        {
          "name": "en",
          "url": "https://vuejs.org/api/built-in-directives.html#v-html"
        },
        {
          "name": "zh-cn",
          "url": "https://cn.vuejs.org/api/built-in-directives.html#v-html"
        },
        {
          "name": "ja",
          "url": "https://ja.vuejs.org/api/built-in-directives.html#v-html"
        },
        {
          "name": "ua",
          "url": "https://ua.vuejs.org/api/built-in-directives.html#v-html"
        },
        {
          "name": "fr",
          "url": "https://fr.vuejs.org/api/built-in-directives.html#v-html"
        },
        {
          "name": "ko",
          "url": "https://ko.vuejs.org/api/built-in-directives.html#v-html"
        }
      ]
    },
    {
      "name": "v-show",
      "description": {
        "kind": "markdown",
        "value": "\n基於表達式值的真假性，來改變元素的可見性。\n\n- **期望的綁定值類型：**`any`\n\n- **詳細信息**\n\n  `v-show` 通過設置內聯樣式的 `display` CSS 屬性來工作，當元素可見時將使用初始 `display` 值。當條件改變時，也會觸發過渡效果。\n\n- **參考**：[條件渲染 - v-show](https://cn.vuejs.org/guide/essentials/conditional.html#v-show)\n"
      },
      "references": [
        {
          "name": "en",
          "url": "https://vuejs.org/api/built-in-directives.html#v-show"
        },
        {
          "name": "zh-cn",
          "url": "https://cn.vuejs.org/api/built-in-directives.html#v-show"
        },
        {
          "name": "ja",
          "url": "https://ja.vuejs.org/api/built-in-directives.html#v-show"
        },
        {
          "name": "ua",
          "url": "https://ua.vuejs.org/api/built-in-directives.html#v-show"
        },
        {
          "name": "fr",
          "url": "https://fr.vuejs.org/api/built-in-directives.html#v-show"
        },
        {
          "name": "ko",
          "url": "https://ko.vuejs.org/api/built-in-directives.html#v-show"
        }
      ]
    },
    {
      "name": "v-if",
      "description": {
        "kind": "markdown",
        "value": "\n基於表達式值的真假性，來條件性地渲染元素或者模板片段。\n\n- **期望的綁定值類型：**`any`\n\n- **詳細信息**\n\n  當 `v-if` 元素被觸發，元素及其所包含的指令/組件都會銷燬和重構。如果初始條件是假，那麼其內部的內容根本都不會被渲染。\n\n  可用於 `<template>` 表示僅包含文本或多個元素的條件塊。\n\n  當條件改變時會觸發過渡效果。\n\n  當同時使用時，`v-if` 比 `v-for` 優先級更高。我們並不推薦在一元素上同時使用這兩個指令 — 查看[列表渲染指南](https://cn.vuejs.org/guide/essentials/list.html#v-for-with-v-if)詳情。\n\n- **參考**：[條件渲染 - v-if](https://cn.vuejs.org/guide/essentials/conditional.html#v-if)\n"
      },
      "references": [
        {
          "name": "en",
          "url": "https://vuejs.org/api/built-in-directives.html#v-if"
        },
        {
          "name": "zh-cn",
          "url": "https://cn.vuejs.org/api/built-in-directives.html#v-if"
        },
        {
          "name": "ja",
          "url": "https://ja.vuejs.org/api/built-in-directives.html#v-if"
        },
        {
          "name": "ua",
          "url": "https://ua.vuejs.org/api/built-in-directives.html#v-if"
        },
        {
          "name": "fr",
          "url": "https://fr.vuejs.org/api/built-in-directives.html#v-if"
        },
        {
          "name": "ko",
          "url": "https://ko.vuejs.org/api/built-in-directives.html#v-if"
        }
      ]
    },
    {
      "name": "v-else",
      "valueSet": "v",
      "description": {
        "kind": "markdown",
        "value": "\n表示 `v-if` 或 `v-if` / `v-else-if` 鏈式調用的“else 塊”。\n\n- **無需傳入表達式**\n\n- **詳細信息**\n\n  - 限定：上一個兄弟元素必須有 `v-if` 或 `v-else-if`。\n\n  - 可用於 `<template>` 表示僅包含文本或多個元素的條件塊。\n\n- **示例**\n\n  ```html\n  <div v-if=\"Math.random() > 0.5\">\n    Now you see me\n  </div>\n  <div v-else>\n    Now you don't\n  </div>\n  ```\n\n- **參考**：[條件渲染 - v-else](https://cn.vuejs.org/guide/essentials/conditional.html#v-else)\n"
      },
      "references": [
        {
          "name": "en",
          "url": "https://vuejs.org/api/built-in-directives.html#v-else"
        },
        {
          "name": "zh-cn",
          "url": "https://cn.vuejs.org/api/built-in-directives.html#v-else"
        },
        {
          "name": "ja",
          "url": "https://ja.vuejs.org/api/built-in-directives.html#v-else"
        },
        {
          "name": "ua",
          "url": "https://ua.vuejs.org/api/built-in-directives.html#v-else"
        },
        {
          "name": "fr",
          "url": "https://fr.vuejs.org/api/built-in-directives.html#v-else"
        },
        {
          "name": "ko",
          "url": "https://ko.vuejs.org/api/built-in-directives.html#v-else"
        }
      ]
    },
    {
      "name": "v-else-if",
      "description": {
        "kind": "markdown",
        "value": "\n表示 `v-if` 的“else if 塊”。可以進行鏈式調用。\n\n- **期望的綁定值類型：**`any`\n\n- **詳細信息**\n\n  - 限定：上一個兄弟元素必須有 `v-if` 或 `v-else-if`。\n\n  - 可用於 `<template>` 表示僅包含文本或多個元素的條件塊。\n\n- **示例**\n\n  ```html\n  <div v-if=\"type === 'A'\">\n    A\n  </div>\n  <div v-else-if=\"type === 'B'\">\n    B\n  </div>\n  <div v-else-if=\"type === 'C'\">\n    C\n  </div>\n  <div v-else>\n    Not A/B/C\n  </div>\n  ```\n\n- **參考**：[條件渲染 - v-else-if](https://cn.vuejs.org/guide/essentials/conditional.html#v-else-if)\n"
      },
      "references": [
        {
          "name": "en",
          "url": "https://vuejs.org/api/built-in-directives.html#v-else-if"
        },
        {
          "name": "zh-cn",
          "url": "https://cn.vuejs.org/api/built-in-directives.html#v-else-if"
        },
        {
          "name": "ja",
          "url": "https://ja.vuejs.org/api/built-in-directives.html#v-else-if"
        },
        {
          "name": "ua",
          "url": "https://ua.vuejs.org/api/built-in-directives.html#v-else-if"
        },
        {
          "name": "fr",
          "url": "https://fr.vuejs.org/api/built-in-directives.html#v-else-if"
        },
        {
          "name": "ko",
          "url": "https://ko.vuejs.org/api/built-in-directives.html#v-else-if"
        }
      ]
    },
    {
      "name": "v-for",
      "description": {
        "kind": "markdown",
        "value": "\n基於原始數據多次渲染元素或模板塊。\n\n- **期望的綁定值類型：**`Array | Object | number | string | Iterable`\n\n- **詳細信息**\n\n  指令值必須使用特殊語法 `alias in expression` 為正在迭代的元素提供一個別名：\n\n  ```html\n  <div v-for=\"item in items\">\n    {{ item.text }}\n  </div>\n  ```\n\n  或者，你也可以為索引指定別名 (如果用在對象，則是鍵值)：\n\n  ```html\n  <div v-for=\"(item, index) in items\"></div>\n  <div v-for=\"(value, key) in object\"></div>\n  <div v-for=\"(value, name, index) in object\"></div>\n  ```\n\n  `v-for` 的默認方式是嘗試就地更新元素而不移動它們。要強制其重新排序元素，你需要用特殊 attribute `key` 來提供一個排序提示：\n\n  ```html\n  <div v-for=\"item in items\" :key=\"item.id\">\n    {{ item.text }}\n  </div>\n  ```\n\n  `v-for` 也可以用於 [Iterable Protocol](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols#The_iterable_protocol) 的實現，包括原生 `Map` 和 `Set`。\n\n- **參考：**\n  - [列表渲染](https://cn.vuejs.org/guide/essentials/list.html)\n"
      },
      "references": [
        {
          "name": "en",
          "url": "https://vuejs.org/api/built-in-directives.html#v-for"
        },
        {
          "name": "zh-cn",
          "url": "https://cn.vuejs.org/api/built-in-directives.html#v-for"
        },
        {
          "name": "ja",
          "url": "https://ja.vuejs.org/api/built-in-directives.html#v-for"
        },
        {
          "name": "ua",
          "url": "https://ua.vuejs.org/api/built-in-directives.html#v-for"
        },
        {
          "name": "fr",
          "url": "https://fr.vuejs.org/api/built-in-directives.html#v-for"
        },
        {
          "name": "ko",
          "url": "https://ko.vuejs.org/api/built-in-directives.html#v-for"
        }
      ]
    },
    {
      "name": "v-on",
      "description": {
        "kind": "markdown",
        "value": "\n給元素綁定事件監聽器。\n\n- **縮寫：**`@`\n\n- **期望的綁定值類型：**`Function | Inline Statement | Object (不帶參數)`\n\n- **參數：**`event` (使用對象語法則為可選項)\n\n- **修飾符：**\n\n  - `.stop` - 調用 `event.stopPropagation()`。\n  - `.prevent` - 調用 `event.preventDefault()`。\n  - `.capture` - 在捕獲模式添加事件監聽器。\n  - `.self` - 只有事件從元素本身發出才觸發處理函數。\n  - `.{keyAlias}` - 只在某些按鍵下觸發處理函數。\n  - `.once` - 最多觸發一次處理函數。\n  - `.left` - 只在鼠標左鍵事件觸發處理函數。\n  - `.right` - 只在鼠標右鍵事件觸發處理函數。\n  - `.middle` - 只在鼠標中鍵事件觸發處理函數。\n  - `.passive` - 通過 `{ passive: true }` 附加一個 DOM 事件。\n\n- **詳細信息**\n\n  事件類型由參數來指定。表達式可以是一個方法名，一個內聯聲明，如果有修飾符則可省略。\n\n  當用於普通元素，只監聽[**原生 DOM 事件**](https://developer.mozilla.org/en-US/docs/Web/Events)。當用於自定義元素組件，則監聽子組件觸發的**自定義事件**。\n\n  當監聽原生 DOM 事件時，方法接收原生事件作為唯一參數。如果使用內聯聲明，聲明可以訪問一個特殊的 `$event` 變量：`v-on:click=\"handle('ok', $event)\"`。\n\n  `v-on` 還支持綁定不帶參數的事件/監聽器對的對象。請注意，當使用對象語法時，不支持任何修飾符。\n\n- **示例：**\n\n  ```html\n  <!-- 方法處理函數 -->\n  <button v-on:click=\"doThis\"></button>\n\n  <!-- 動態事件 -->\n  <button v-on:[event]=\"doThis\"></button>\n\n  <!-- 內聯聲明 -->\n  <button v-on:click=\"doThat('hello', $event)\"></button>\n\n  <!-- 縮寫 -->\n  <button @click=\"doThis\"></button>\n\n  <!-- 使用縮寫的動態事件 -->\n  <button @[event]=\"doThis\"></button>\n\n  <!-- 停止傳播 -->\n  <button @click.stop=\"doThis\"></button>\n\n  <!-- 阻止默認事件 -->\n  <button @click.prevent=\"doThis\"></button>\n\n  <!-- 不帶表達式地阻止默認事件 -->\n  <form @submit.prevent></form>\n\n  <!-- 鏈式調用修飾符 -->\n  <button @click.stop.prevent=\"doThis\"></button>\n\n  <!-- 按鍵用於 keyAlias 修飾符-->\n  <input @keyup.enter=\"onEnter\" />\n\n  <!-- 點擊事件將最多觸發一次 -->\n  <button v-on:click.once=\"doThis\"></button>\n\n  <!-- 對象語法 -->\n  <button v-on=\"{ mousedown: doThis, mouseup: doThat }\"></button>\n  ```\n\n  監聽子組件的自定義事件 (當子組件的“my-event”事件被觸發，處理函數將被調用)：\n\n  ```html\n  <MyComponent @my-event=\"handleThis\" />\n\n  <!-- 內聯聲明 -->\n  <MyComponent @my-event=\"handleThis(123, $event)\" />\n  ```\n\n- **參考：**\n  - [事件處理](https://cn.vuejs.org/guide/essentials/event-handling.html)\n  - [組件 - 自定義事件](https://cn.vuejs.org/guide/essentials/component-basics.html#listening-to-events)\n"
      },
      "references": [
        {
          "name": "en",
          "url": "https://vuejs.org/api/built-in-directives.html#v-on"
        },
        {
          "name": "zh-cn",
          "url": "https://cn.vuejs.org/api/built-in-directives.html#v-on"
        },
        {
          "name": "ja",
          "url": "https://ja.vuejs.org/api/built-in-directives.html#v-on"
        },
        {
          "name": "ua",
          "url": "https://ua.vuejs.org/api/built-in-directives.html#v-on"
        },
        {
          "name": "fr",
          "url": "https://fr.vuejs.org/api/built-in-directives.html#v-on"
        },
        {
          "name": "ko",
          "url": "https://ko.vuejs.org/api/built-in-directives.html#v-on"
        }
      ]
    },
    {
      "name": "v-bind",
      "description": {
        "kind": "markdown",
        "value": "\n動態的綁定一個或多個 attribute，也可以是組件的 prop。\n\n- **縮寫：**`:` 或者 `.` (當使用 `.prop` 修飾符)\n\n- **期望：**`any (帶參數) | Object (不帶參數)`\n\n- **參數：**`attrOrProp (可選的)`\n\n- **修飾符：**\n\n  - `.camel` - 將短橫線命名的 attribute 轉變為駝峰式命名。\n  - `.prop` - 強制綁定為 DOM property。<sup class=\"vt-badge\">3.2+</sup>\n  - `.attr` - 強制綁定為 DOM attribute。<sup class=\"vt-badge\">3.2+</sup>\n\n- **用途：**\n\n  當用於綁定 `class` 或 `style` attribute，`v-bind` 支持額外的值類型如數組或對象。詳見下方的指南鏈接。\n\n  在處理綁定時，Vue 默認會利用 `in` 操作符來檢查該元素上是否定義了和綁定的 key 同名的 DOM property。如果存在同名的 property，則 Vue 會把作為 DOM property 賦值，而不是作為 attribute 設置。這個行為在大多數情況都符合期望的綁定值類型，但是你也可以顯式用 `.prop` 和 `.attr` 修飾符來強制綁定方式。有時這是必要的，特別是在和[自定義元素](https://cn.vuejs.org/guide/extras/web-components.html#passing-dom-properties)打交道時。\n\n  當用於組件 props 綁定時，所綁定的 props 必須在子組件中已被正確聲明。\n\n  當不帶參數使用時，可以用於綁定一個包含了多個 attribute 名稱-綁定值對的對象。\n\n- **示例：**\n\n  ```html\n  <!-- 綁定 attribute -->\n  <img v-bind:src=\"imageSrc\" />\n\n  <!-- 動態 attribute 名 -->\n  <button v-bind:[key]=\"value\"></button>\n\n  <!-- 縮寫 -->\n  <img :src=\"imageSrc\" />\n\n  <!-- 縮寫形式的動態 attribute 名 -->\n  <button :[key]=\"value\"></button>\n\n  <!-- 內聯字符串拼接 -->\n  <img :src=\"'/path/to/images/' + fileName\" />\n\n  <!-- class 綁定 -->\n  <div :class=\"{ red: isRed }\"></div>\n  <div :class=\"[classA, classB]\"></div>\n  <div :class=\"[classA, { classB: isB, classC: isC }]\"></div>\n\n  <!-- style 綁定 -->\n  <div :style=\"{ fontSize: size + 'px' }\"></div>\n  <div :style=\"[styleObjectA, styleObjectB]\"></div>\n\n  <!-- 綁定對象形式的 attribute -->\n  <div v-bind=\"{ id: someProp, 'other-attr': otherProp }\"></div>\n\n  <!-- prop 綁定。“prop” 必須在子組件中已聲明。 -->\n  <MyComponent :prop=\"someThing\" />\n\n  <!-- 傳遞子父組件共有的 prop -->\n  <MyComponent v-bind=\"$props\" />\n\n  <!-- XLink -->\n  <svg><a :xlink:special=\"foo\"></a></svg>\n  ```\n\n  `.prop` 修飾符也有專門的縮寫，`.`：\n\n  ```html\n  <div :someProperty.prop=\"someObject\"></div>\n\n  <!-- 等同於 -->\n  <div .someProperty=\"someObject\"></div>\n  ```\n\n  當在 DOM 內模板使用 `.camel` 修飾符，可以駝峰化 `v-bind` attribute 的名稱，例如 SVG `viewBox` attribute：\n\n  ```html\n  <svg :view-box.camel=\"viewBox\"></svg>\n  ```\n\n  如果使用字符串模板或使用構建步驟預編譯模板，則不需要 `.camel`。\n\n- **參考：**\n  - [Class 與 Style 綁定](https://cn.vuejs.org/guide/essentials/class-and-style.html)\n  - [組件 -  Prop 傳遞細節](https://cn.vuejs.org/guide/components/props.html#prop-passing-details)\n"
      },
      "references": [
        {
          "name": "en",
          "url": "https://vuejs.org/api/built-in-directives.html#v-bind"
        },
        {
          "name": "zh-cn",
          "url": "https://cn.vuejs.org/api/built-in-directives.html#v-bind"
        },
        {
          "name": "ja",
          "url": "https://ja.vuejs.org/api/built-in-directives.html#v-bind"
        },
        {
          "name": "ua",
          "url": "https://ua.vuejs.org/api/built-in-directives.html#v-bind"
        },
        {
          "name": "fr",
          "url": "https://fr.vuejs.org/api/built-in-directives.html#v-bind"
        },
        {
          "name": "ko",
          "url": "https://ko.vuejs.org/api/built-in-directives.html#v-bind"
        }
      ]
    },
    {
      "name": "v-model",
      "description": {
        "kind": "markdown",
        "value": "\n在表單輸入元素或組件上創建雙向綁定。\n\n- **期望的綁定值類型**：根據表單輸入元素或組件輸出的值而變化\n\n- **僅限：**\n\n  - `<input>`\n  - `<select>`\n  - `<textarea>`\n  - components\n\n- **修飾符：**\n\n  - [`.lazy`](https://cn.vuejs.org/guide/essentials/forms.html#lazy) - 監聽 `change` 事件而不是 `input`\n  - [`.number`](https://cn.vuejs.org/guide/essentials/forms.html#number) - 將輸入的合法字符串轉為數字\n  - [`.trim`](https://cn.vuejs.org/guide/essentials/forms.html#trim) - 移除輸入內容兩端空格\n\n- **參考：**\n\n  - [表單輸入綁定](https://cn.vuejs.org/guide/essentials/forms.html)\n  - [組件事件 - 配合 `v-model` 使用](https://cn.vuejs.org/guide/components/v-model.html)\n"
      },
      "references": [
        {
          "name": "en",
          "url": "https://vuejs.org/api/built-in-directives.html#v-model"
        },
        {
          "name": "zh-cn",
          "url": "https://cn.vuejs.org/api/built-in-directives.html#v-model"
        },
        {
          "name": "ja",
          "url": "https://ja.vuejs.org/api/built-in-directives.html#v-model"
        },
        {
          "name": "ua",
          "url": "https://ua.vuejs.org/api/built-in-directives.html#v-model"
        },
        {
          "name": "fr",
          "url": "https://fr.vuejs.org/api/built-in-directives.html#v-model"
        },
        {
          "name": "ko",
          "url": "https://ko.vuejs.org/api/built-in-directives.html#v-model"
        }
      ]
    },
    {
      "name": "v-slot",
      "description": {
        "kind": "markdown",
        "value": "\n用於聲明具名插槽或是期望接收 props 的作用域插槽。\n\n- **縮寫：**`#`\n\n- **期望的綁定值類型**：能夠合法在函數參數位置使用的 JavaScript 表達式。支持解構語法。綁定值是可選的——只有在給作用域插槽傳遞 props 才需要。\n\n- **參數**：插槽名 (可選，默認是 `default`)\n\n- **僅限：**\n\n  - `<template>`\n  - [components](https://cn.vuejs.org/guide/components/slots.html#scoped-slots) (用於帶有 prop 的單個默認插槽)\n\n- **示例：**\n\n  ```html\n  <!-- 具名插槽 -->\n  <BaseLayout>\n    <template v-slot:header>\n      Header content\n    </template>\n\n    <template v-slot:default>\n      Default slot content\n    </template>\n\n    <template v-slot:footer>\n      Footer content\n    </template>\n  </BaseLayout>\n\n  <!-- 接收 prop 的具名插槽 -->\n  <InfiniteScroll>\n    <template v-slot:item=\"slotProps\">\n      <div class=\"item\">\n        {{ slotProps.item.text }}\n      </div>\n    </template>\n  </InfiniteScroll>\n\n  <!-- 接收 prop 的默認插槽，並解構 -->\n  <Mouse v-slot=\"{ x, y }\">\n    Mouse position: {{ x }}, {{ y }}\n  </Mouse>\n  ```\n\n- **參考：**\n  - [組件 - 插槽](https://cn.vuejs.org/guide/components/slots.html)\n"
      },
      "references": [
        {
          "name": "en",
          "url": "https://vuejs.org/api/built-in-directives.html#v-slot"
        },
        {
          "name": "zh-cn",
          "url": "https://cn.vuejs.org/api/built-in-directives.html#v-slot"
        },
        {
          "name": "ja",
          "url": "https://ja.vuejs.org/api/built-in-directives.html#v-slot"
        },
        {
          "name": "ua",
          "url": "https://ua.vuejs.org/api/built-in-directives.html#v-slot"
        },
        {
          "name": "fr",
          "url": "https://fr.vuejs.org/api/built-in-directives.html#v-slot"
        },
        {
          "name": "ko",
          "url": "https://ko.vuejs.org/api/built-in-directives.html#v-slot"
        }
      ]
    },
    {
      "name": "v-pre",
      "description": {
        "kind": "markdown",
        "value": "\n跳過該元素及其所有子元素的編譯。\n\n- **無需傳入**\n\n- **詳細信息**\n\n  元素內具有 `v-pre`，所有 Vue 模板語法都會被保留並按原樣渲染。最常見的用例就是顯示原始雙大括號標籤及內容。\n\n- **示例：**\n\n  ```html\n  <span v-pre>{{ this will not be compiled }}</span>\n  ```\n"
      },
      "references": [
        {
          "name": "en",
          "url": "https://vuejs.org/api/built-in-directives.html#v-pre"
        },
        {
          "name": "zh-cn",
          "url": "https://cn.vuejs.org/api/built-in-directives.html#v-pre"
        },
        {
          "name": "ja",
          "url": "https://ja.vuejs.org/api/built-in-directives.html#v-pre"
        },
        {
          "name": "ua",
          "url": "https://ua.vuejs.org/api/built-in-directives.html#v-pre"
        },
        {
          "name": "fr",
          "url": "https://fr.vuejs.org/api/built-in-directives.html#v-pre"
        },
        {
          "name": "ko",
          "url": "https://ko.vuejs.org/api/built-in-directives.html#v-pre"
        }
      ]
    },
    {
      "name": "v-once",
      "description": {
        "kind": "markdown",
        "value": "\n僅渲染元素和組件一次，並跳過之後的更新。\n\n- **無需傳入**\n\n- **詳細信息**\n\n  在隨後的重新渲染，元素/組件及其所有子項將被當作靜態內容並跳過渲染。這可以用來優化更新時的性能。\n\n  ```html\n  <!-- 單個元素 -->\n  <span v-once>This will never change: {{msg}}</span>\n  <!-- 帶有子元素的元素 -->\n  <div v-once>\n    <h1>comment</h1>\n    <p>{{msg}}</p>\n  </div>\n  <!-- 組件 -->\n  <MyComponent v-once :comment=\"msg\" />\n  <!-- `v-for` 指令 -->\n  <ul>\n    <li v-for=\"i in list\" v-once>{{i}}</li>\n  </ul>\n  ```\n\n  從 3.2 起，你也可以搭配 [`v-memo`](#v-memo) 的無效條件來緩存部分模板。\n\n- **參考：**\n  - [數據綁定語法 - 插值](https://cn.vuejs.org/guide/essentials/template-syntax.html#text-interpolation)\n  - [v-memo](#v-memo)\n"
      },
      "references": [
        {
          "name": "en",
          "url": "https://vuejs.org/api/built-in-directives.html#v-once"
        },
        {
          "name": "zh-cn",
          "url": "https://cn.vuejs.org/api/built-in-directives.html#v-once"
        },
        {
          "name": "ja",
          "url": "https://ja.vuejs.org/api/built-in-directives.html#v-once"
        },
        {
          "name": "ua",
          "url": "https://ua.vuejs.org/api/built-in-directives.html#v-once"
        },
        {
          "name": "fr",
          "url": "https://fr.vuejs.org/api/built-in-directives.html#v-once"
        },
        {
          "name": "ko",
          "url": "https://ko.vuejs.org/api/built-in-directives.html#v-once"
        }
      ]
    },
    {
      "name": "v-memo",
      "description": {
        "kind": "markdown",
        "value": "\n- **期望的綁定值類型：**`any[]`\n\n- **詳細信息**\n\n  緩存一個模板的子樹。在元素和組件上都可以使用。為了實現緩存，該指令需要傳入一個固定長度的依賴值數組進行比較。如果數組裡的每個值都與最後一次的渲染相同，那麼整個子樹的更新將被跳過。舉例來說：\n\n  ```html\n  <div v-memo=\"[valueA, valueB]\">\n    ...\n  </div>\n  ```\n\n  當組件重新渲染，如果 `valueA` 和 `valueB` 都保持不變，這個 `<div>` 及其子項的所有更新都將被跳過。實際上，甚至虛擬 DOM 的 vnode 創建也將被跳過，因為緩存的子樹副本可以被重新使用。\n\n  正確指定緩存數組很重要，否則應該生效的更新可能被跳過。`v-memo` 傳入空依賴數組 (`v-memo=\"[]\"`) 將與 `v-once` 效果相同。\n\n  **與 `v-for` 一起使用**\n\n  `v-memo` 僅用於性能至上場景中的微小優化，應該很少需要。最常見的情況可能是有助於渲染海量 `v-for` 列表 (長度超過 1000 的情況)：\n\n  ```html\n  <div v-for=\"item in list\" :key=\"item.id\" v-memo=\"[item.id === selected]\">\n    <p>ID: {{ item.id }} - selected: {{ item.id === selected }}</p>\n    <p>...more child nodes</p>\n  </div>\n  ```\n\n  當組件的 `selected` 狀態改變，默認會重新創建大量的 vnode，儘管絕大部分都跟之前是一模一樣的。`v-memo` 用在這裡本質上是在說“只有當該項的被選中狀態改變時才需要更新”。這使得每個選中狀態沒有變的項能完全重用之前的 vnode 並跳過差異比較。注意這裡 memo 依賴數組中並不需要包含 `item.id`，因為 Vue 也會根據 item 的 `:key` 進行判斷。\n\n  :::warning 警告\n  當搭配 `v-for` 使用 `v-memo`，確保兩者都綁定在同一個元素上。**`v-memo` 不能用在 `v-for` 內部。**\n  :::\n\n  `v-memo` 也能被用於在一些默認優化失敗的邊際情況下，手動避免子組件出現不需要的更新。但是一樣的，開發者需要負責指定正確的依賴數組以免跳過必要的更新。\n\n- **參考：**\n  - [v-once](#v-once)\n"
      },
      "references": [
        {
          "name": "en",
          "url": "https://vuejs.org/api/built-in-directives.html#v-memo"
        },
        {
          "name": "zh-cn",
          "url": "https://cn.vuejs.org/api/built-in-directives.html#v-memo"
        },
        {
          "name": "ja",
          "url": "https://ja.vuejs.org/api/built-in-directives.html#v-memo"
        },
        {
          "name": "ua",
          "url": "https://ua.vuejs.org/api/built-in-directives.html#v-memo"
        },
        {
          "name": "fr",
          "url": "https://fr.vuejs.org/api/built-in-directives.html#v-memo"
        },
        {
          "name": "ko",
          "url": "https://ko.vuejs.org/api/built-in-directives.html#v-memo"
        }
      ]
    },
    {
      "name": "v-cloak",
      "description": {
        "kind": "markdown",
        "value": "\n用於隱藏尚未完成編譯的 DOM 模板。\n\n- **無需傳入**\n\n- **詳細信息**\n\n  **該指令只在沒有構建步驟的環境下需要使用。**\n\n  當使用直接在 DOM 中書寫的模板時，可能會出現一種叫做“未編譯模板閃現”的情況：用戶可能先看到的是還沒編譯完成的雙大括號標籤，直到掛載的組件將它們替換為實際渲染的內容。\n\n  `v-cloak` 會保留在所綁定的元素上，直到相關組件實例被掛載後才移除。配合像 `[v-cloak] { display: none }` 這樣的 CSS 規則，它可以在組件編譯完畢前隱藏原始模板。\n\n- **示例：**\n\n  ```css\n  [v-cloak] {\n    display: none;\n  }\n  ```\n\n  ```html\n  <div v-cloak>\n    {{ message }}\n  </div>\n  ```\n\n  直到編譯完成前，`<div>` 將不可見。\n"
      },
      "references": [
        {
          "name": "en",
          "url": "https://vuejs.org/api/built-in-directives.html#v-cloak"
        },
        {
          "name": "zh-cn",
          "url": "https://cn.vuejs.org/api/built-in-directives.html#v-cloak"
        },
        {
          "name": "ja",
          "url": "https://ja.vuejs.org/api/built-in-directives.html#v-cloak"
        },
        {
          "name": "ua",
          "url": "https://ua.vuejs.org/api/built-in-directives.html#v-cloak"
        },
        {
          "name": "fr",
          "url": "https://fr.vuejs.org/api/built-in-directives.html#v-cloak"
        },
        {
          "name": "ko",
          "url": "https://ko.vuejs.org/api/built-in-directives.html#v-cloak"
        }
      ]
    },
    {
      "name": "key",
      "description": {
        "kind": "markdown",
        "value": "\n`key` 這個特殊的 attribute 主要作為 Vue 的虛擬 DOM 算法提示，在比較新舊節點列表時用於識別 vnode。\n\n- **預期**：`number | string | symbol`\n\n- **詳細信息**\n\n  在沒有 key 的情況下，Vue 將使用一種最小化元素移動的算法，並儘可能地就地更新/複用相同類型的元素。如果傳了 key，則將根據 key 的變化順序來重新排列元素，並且將始終移除/銷燬 key 已經不存在的元素。\n\n  同一個父元素下的子元素必須具有**唯一的 key**。重複的 key 將會導致渲染異常。\n\n  最常見的用例是與 `v-for` 結合：\n\n  ```html\n  <ul>\n    <li v-for=\"item in items\" :key=\"item.id\">...</li>\n  </ul>\n  ```\n\n  也可以用於強制替換一個元素/組件而不是複用它。當你想這麼做時它可能會很有用：\n\n  - 在適當的時候觸發組件的生命週期鉤子\n  - 觸發過渡\n\n  舉例來說：\n\n  ```html\n  <transition>\n    <span :key=\"text\">{{ text }}</span>\n  </transition>\n  ```\n\n  當 `text` 變化時，`<span>` 總是會被替換而不是更新，因此 transition 將會被觸發。\n\n- **參考**：[指南- 列表渲染 - 通過 `key` 管理狀態](https://cn.vuejs.org/guide/essentials/list.html#maintaining-state-with-key)\n"
      },
      "references": [
        {
          "name": "en",
          "url": "https://vuejs.org/api/built-in-special-attributes.html#key"
        },
        {
          "name": "zh-cn",
          "url": "https://cn.vuejs.org/api/built-in-special-attributes.html#key"
        },
        {
          "name": "ja",
          "url": "https://ja.vuejs.org/api/built-in-special-attributes.html#key"
        },
        {
          "name": "ua",
          "url": "https://ua.vuejs.org/api/built-in-special-attributes.html#key"
        },
        {
          "name": "fr",
          "url": "https://fr.vuejs.org/api/built-in-special-attributes.html#key"
        },
        {
          "name": "ko",
          "url": "https://ko.vuejs.org/api/built-in-special-attributes.html#key"
        }
      ]
    },
    {
      "name": "ref",
      "description": {
        "kind": "markdown",
        "value": "\n用於註冊[模板引用](https://cn.vuejs.org/guide/essentials/template-refs.html)。\n\n- **預期**：`string | Function`\n\n- **詳細信息**\n\n  `ref` 用於註冊元素或子組件的引用。\n\n  使用選項式 API，引用將被註冊在組件的 `this.$refs` 對象裡：\n\n  ```html\n  <!-- 存儲為 this.$refs.p -->\n  <p ref=\"p\">hello</p>\n  ```\n\n  使用組合式 API，引用將存儲在與名字匹配的 ref 裡：\n\n  ```vue\n  <script setup>\n  import { ref } from 'vue'\n\n  const p = ref()\n  </script>\n\n  <template>\n    <p ref=\"p\">hello</p>\n  </template>\n  ```\n\n  如果用於普通 DOM 元素，引用將是元素本身；如果用於子組件，引用將是子組件的實例。\n\n  或者 `ref` 可以接收一個函數值，用於對存儲引用位置的完全控制：\n\n  ```html\n  <ChildComponent :ref=\"(el) => child = el\" />\n  ```\n\n  關於 ref 註冊時機的重要說明：因為 ref 本身是作為渲染函數的結果來創建的，必須等待組件掛載後才能對它進行訪問。\n\n  `this.$refs` 也是非響應式的，因此你不應該嘗試在模板中使用它來進行數據綁定。\n\n- **參考:**\n  - [指南 - 模板引用](https://cn.vuejs.org/guide/essentials/template-refs.html)\n  - [指南 - 為模板引用標註類型](https://cn.vuejs.org/guide/typescript/composition-api.html#typing-template-refs) <sup class=\"vt-badge ts\" />\n  - [指南 - 為組件模板引用標註類型](https://cn.vuejs.org/guide/typescript/composition-api.html#typing-component-template-refs) <sup class=\"vt-badge ts\" />\n"
      },
      "references": [
        {
          "name": "en",
          "url": "https://vuejs.org/api/built-in-special-attributes.html#ref"
        },
        {
          "name": "zh-cn",
          "url": "https://cn.vuejs.org/api/built-in-special-attributes.html#ref"
        },
        {
          "name": "ja",
          "url": "https://ja.vuejs.org/api/built-in-special-attributes.html#ref"
        },
        {
          "name": "ua",
          "url": "https://ua.vuejs.org/api/built-in-special-attributes.html#ref"
        },
        {
          "name": "fr",
          "url": "https://fr.vuejs.org/api/built-in-special-attributes.html#ref"
        },
        {
          "name": "ko",
          "url": "https://ko.vuejs.org/api/built-in-special-attributes.html#ref"
        }
      ]
    },
    {
      "name": "is",
      "description": {
        "kind": "markdown",
        "value": "\n用於綁定[動態組件](https://cn.vuejs.org/guide/essentials/component-basics.html#dynamic-components)。\n\n- **預期**：`string | Component`\n\n- **用於原生元素** <sup class=\"vt-badge\">3.1+</sup>\n\n  當 `is` attribute 用於原生 HTML 元素時，它將被當作 [Customized built-in element](https://html.spec.whatwg.org/multipage/custom-elements.html#custom-elements-customized-builtin-example)，其為原生 web 平臺的特性。\n\n  但是，在這種用例中，你可能需要 Vue 用其組件來替換原生元素，如 [DOM 模板解析注意事項](https://cn.vuejs.org/guide/essentials/component-basics.html#dom-template-parsing-caveats)所述。你可以在 `is` attribute 的值中加上 `vue:` 前綴，這樣 Vue 就會把該元素渲染為 Vue 組件：\n\n  ```html\n  <table>\n    <tr is=\"vue:my-row-component\"></tr>\n  </table>\n  ```\n\n- **參考：**\n\n  - [內置特殊元素 - `<component>`](https://cn.vuejs.org/api/built-in-special-elements.html#component)\n  - [動態組件](https://cn.vuejs.org/guide/essentials/component-basics.html#dynamic-components)\n"
      },
      "references": [
        {
          "name": "en",
          "url": "https://vuejs.org/api/built-in-special-attributes.html#is"
        },
        {
          "name": "zh-cn",
          "url": "https://cn.vuejs.org/api/built-in-special-attributes.html#is"
        },
        {
          "name": "ja",
          "url": "https://ja.vuejs.org/api/built-in-special-attributes.html#is"
        },
        {
          "name": "ua",
          "url": "https://ua.vuejs.org/api/built-in-special-attributes.html#is"
        },
        {
          "name": "fr",
          "url": "https://fr.vuejs.org/api/built-in-special-attributes.html#is"
        },
        {
          "name": "ko",
          "url": "https://ko.vuejs.org/api/built-in-special-attributes.html#is"
        }
      ]
    }
  ]
}