vue2使用sync修饰符父子组件的值双向绑定

news/2025/4/26 12:32:24/

1、使用场景

    当我需要对一个 prop 进行“双向绑定的时候,通常用在封装弹窗组件的时候来进行使用,当然也会有其他的使用场景,只要涉及到父子组件之间需要传参的都可以使用,尽量不要使用watch监听来进行修改值,也不要尝试直接修改props传过来的参数,可以参考官网单向数据流的方式处理。

2、.sync使用方式

  • 以下是element封装的dialog弹窗组件,就是使用了.sync修饰符来进行控制是否弹出,我们要在项目中对dialog组件进行一个二次封装,也使用.sync的方式来实现。

在这里插入图片描述

  • 子组件代码部分
    1、props接收dialogVisible,并赋值给el-dialog组件;
    2、通过点击事件出发emit事件;
    3、通过为 this.$emit(‘update:dialogVisible’,false),update是固定的,后面的是你需要改变的值,要和你props传过来的值保持一致;
    4、修改后的值会更新到父组件;
// 子组件
<template><div class="hello"><el-dialog title="提示" :visible.sync="dialogVisible" width="30%" :before-close="handleClose"><span>这是一段信息</span><span slot="footer" class="dialog-footer"><el-button @click="handleClose">取 消</el-button><el-button type="primary" @click="handleConfrim">确 定</el-button></span></el-dialog></div>
</template>
<script>
export default {props: {dialogVisible: {type: Boolean,default: false},},methods: {handleClose(done) {this.$emit('update:dialogVisible',false)},handleConfrim() {this.$emit('update:dialogVisible',false)},change(e) {this.$emit('input', e.data)}}
};
</script>
  • 父组件代码部分
    1、初始化一个默认的值,我这里初始化的值为isShow;
    2、:dialogVisible.sync=“isShow” 向子组件传入dialogVisible,.sync修饰符一定要加上,这样子组的emit的update才会起作用;
    3、然后就可以动态修改父组件的值了;
// 父组件
<template><div id="app"><!-- <img alt="Vue logo" src="./assets/logo.png"> --><el-button type="primary" @click="isShow = true">{{ '展示弹窗' }}</el-button><HelloWorld :dialogVisible.sync="isShow"/></div>
</template><script>
import HelloWorld from './components/HelloWorld.vue'export default {name: 'App',components: {HelloWorld},data() {return {isShow: false}}
}
</script>

http://www.ppmy.cn/news/48469.html

相关文章

如何给厂区做导航地图?智能工厂导航地图解决方案公司

如何给厂区做导航地图&#xff1f;在智慧园区中&#xff0c;基于园区的电子地图地图使用的重要性越来越凸显。但目前在园区信息化应用形式中&#xff0c;广泛缺乏专业电子地图的使用&#xff0c;主要原因是&#xff1a;一是地图系统(GIS)实现繁复&#xff0c;与其他展会业务系统…

大数据实战 --- 美团外卖平台数据分析

目录 开发环境 数据描述 功能需求 数据准备 数据分析 RDD操作 Spark SQL操作 创建Hbase数据表 创建外部表 统计查询 开发环境 HadoopHiveSparkHBase 启动Hadoop&#xff1a;start-all.sh 启动zookeeper&#xff1a;zkServer.sh start 启动Hive&#xff1a; nohup …

DelphiMVCFrameWork 源码分析(一)

Delphi 基础Web Service Application 见&#xff1a; Delphi Web Server 流程分析_看那山瞧那水的博客-CSDN博客 DataSnap的见&#xff1a; Delphi DataSnap 流程分析(一)_看那山瞧那水的博客-CSDN博客 Delphi DataSnap 流程分析(二)_看那山瞧那水的博客-CSDN博客 DelphiMVC…

@SpringBootApplication注解

启动类的 SpringBootApplication // // Source code recreated from a .class file by IntelliJ IDEA // (powered by Fernflower decompiler) //package org.springframework.boot.autoconfigure;import java.lang.annotation.Documented; import java.lang.annotation.Elem…

homebrew安装mysql

安装指定版本的软件 我们可以用版本号来安装指定版本的软件,例如: brew install mysql5.7这会安装MySQL 5.7版本。 查看软件Versions 我们可以用brew info命令查看一个软件的所有版本,例如: brew info mysql会显示MySQL所有可安装版本,然后选择想要的版本号安装。 升级软…

设计模式 -- 命令模式

前言 月是一轮明镜,晶莹剔透,代表着一张白纸(啥也不懂) 央是一片海洋,海乃百川,代表着一块海绵(吸纳万物) 泽是一柄利剑,千锤百炼,代表着千百锤炼(输入输出) 月央泽,学习的一种过程,从白纸->吸收各种知识->不断输入输出变成自己的内容 希望大家一起坚持这个过程,也同…

【Leetcode -342. 4的幂 -344.反转字符串 -345.反转字符串中的元音字母】

Leetcode Leetcode -342. 4的幂Leetcode -344.反转字符串Leetcode -345.反转字符串中的元音字母 Leetcode -342. 4的幂 题目&#xff1a;给定一个整数&#xff0c;写一个函数来判断它是否是 4 的幂次方。如果是&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false …

item_get-获得aliexpress商品详情API的调用参数说明

item_get-获得aliexpress商品详情 aliexpress.item_get 公共参数 名称类型必须描述keyString是调用key&#xff08;免&#xff09;&#xff08;测&#xff09;&#xff08;试&#xff09;secretString是调用密钥api_nameString是API接口名称&#xff08;包括在请求地址中&…