.sync使用

1..sync的常规用法

父组件中:

javascript 复制代码
<!-- 父组件 -->
<custom-dialog :visible.sync="dialogVisible">
  内容区域
</custom-dialog>
这行代码实际上会被 Vue 编译为:
javascript 复制代码
<custom-dialog 
  :visible="dialogVisible"
  @update:visible="val => dialogVisible = val"
>

子组件中:

javascript 复制代码
<script>
export default {
  props: ['visible'],
  methods: {
    close() {
      // 子组件通过触发特定事件来更新父组件数据
      this.$emit('update:visible', false)
    }
  }
}
</script>

2.封装多层组件时,需要拆解.sync,否则打开一次后报错就无法打开第二次

javascript 复制代码
<!-- 中间层组件 -->
<template>
  <div class="wrapper">
    <!-- 1. 显式绑定 prop -->
    <!-- 2. 显式监听事件并向上转发 -->
    <custom-dialog 
      :visible="visible"
      @update:visible="val => $emit('update:visible', val)"
    >
      <slot></slot>
    </custom-dialog>
  </div>
</template>

<script>
export default {
  props: {
    // 必须显式声明接收父组件传来的 visible
    visible: {
      type: Boolean,
      default: false
    }
  }
}
</script>

或简写形式

javascript 复制代码
<custom-dialog 
  :visible="visible"
  @update:visible="$emit('update:visible', $event)"
>
相关推荐
律宏阔3 分钟前
阿里云 ESA + Pages 域名部分电脑无法访问
前端
Lank_M7 分钟前
canvas 第一次画字没用上字体,字体却是它要来的
前端
古夕11 分钟前
iframe 授权失败时露出 60000 JSON 的复盘
前端·javascript
古夕14 分钟前
地址变了,页面是空的:一次 Vue Router 菜单切换复盘
前端·vue.js
JavaGuide15 分钟前
推荐一个好用 DeepSeek Harness 插件,直接把 Agent 上下文给可视化了!
前端·后端
数据掘金22 分钟前
白屏故障定位:从资源请求到路由渲染的排查顺序
前端
程序员Sunday26 分钟前
ES Module 和 CommonJS 有什么区别?循环依赖时会发生什么?
前端·javascript·面试
玲珑意33 分钟前
Vue 3 + DAG拓扑排序 + SSE流式人机协同:现代AI工作流编排系统的工程化实践
前端
三十而立洋38 分钟前
TypeScript 7.0 深度解析:新特性、Go 原生编译器及与 TypeScript 6.0 的区别
前端·typescript·前端工程化
编程之道39 分钟前
从VUE2到VUE3学习过程遇到的一些困惑
前端