vue中的.sync修饰符用法及原理分析
目录
- .sync修饰符用法及原理
- 例如
- .sync修饰符的用法总结
- 需求描述
- 解决方案
.sync修饰符用法及原理
vue中我们经常会用v-bind(缩写为:)给子组件传入参数。
或者我们会给子组件传入一个函数,子组件通过调用传入的函数来改变父组件的状态。
例如
//父组件给子组件传入一个函数 <MyFooter :age="age" @setAge="(res)=> age = res"> </MyFooter> //子组件通过调用这个函数来实现修改父组件的状态。 mounted () { console.log(this.$emit('setAge',1234567)); }
这时子组件触发了父组件的修改函数使父组件的age修改成了1234567
这种情况比较常见切写法比较复杂。于是我们引出今天的主角 .sync
这时我们可以直接这样写
//父组件将age传给子组件并使用.sync修饰符。 <MyFooter :age.sync="age"> </MyFooter> //子组件触发事件 mounted () { console.log(this.$emit('update:age',1234567)); }
这里注意我们的事件名称被换成了update:age
update
:是被固定的也就是vue为我们约定好的名称部分
age是我们要修改的状态的名称,是我们手动配置的,与传入的状态名字对应起来
这样就完成了,是不是感觉简单了很多。
注意事项:
这里我们必须在事件执行名称前加上update:的前缀才能正确触发事件。
.sync修饰符的用法总结
需求描述
最近项目中需要在父子组件中实现数据双向传递的功能。
解决方案
在vue中我们知道props传递的属性只能实现数据的单向流动,如果我们要实现逆向传递的功能一般通过this.$emit()来触发方法来实现,使用.sync修饰符只需要通过this.$emit()来触发属性就能实现。
// 父组件使用 .sync 传递 :page.sync="searchForm.page" // 子组件使用 'update:' 触发 this.$emit('update:page', data)
注意:在uniapp项目中的某些情况下不能正常使用。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。
相关推荐
-
Vue3父子组件传参有关sync修饰符的用法详解
目录 单向数据流讲解 Vue2.x使用 定义事件的形式, 通知父组件修改 .sync 和 update: 的使用 父传子, 传递多个数据的简写 采用v-model简写(要求严格) Vue3.x使用 普通用法 简写 单向数据流讲解 单向数据流(堆可以修改,栈不可修改) 我们都知道, 父传子的数据, 是单向数据流,即子组件不能直接修改, 父组件传递过来的值 但实际上, 对于修改值, 真正是:基本数据类型不可修改,复杂数据类型不要修改引用地址(栈),它的值可以随便修改 Vue2.x使用 定义事件的形式
-
vue .sync修饰符的使用详解
vue的官网介绍非常不错,先通读一遍. 2.3.0+ 新增 在有些情况下,我们可能需要对一个 prop 进行"双向绑定".不幸的是,真正的双向绑定会带来维护上的问题,因为子组件可以修改父组件,且在父组件和子组件都没有明显的改动来源. 这也是为什么我们推荐以 update:my-prop-name 的模式触发事件取而代之.举个例子,在一个包含 title prop 的假设的组件中,我们可以用以下方法表达对其赋新值的意图: this.$emit('update:title', newTi
-
vue 之 .sync 修饰符示例详解
在一些情况下,我们可能会需要对一个 prop (父子组件传递数据的属性) 进行"双向绑定". 在vue 1.x 中的 .sync 修饰符所提供的功能.当一个子组件改变了一个带 .sync 的prop的值时,这个变化也会同步到父组件中所绑定的值. 这很方便,但也会导致问题,因为它破坏了单向数据流.(数据自上而下流,事件自下而上走) 由于子组件改变 prop 的代码和普通的状体改动代码毫无区别,所以当你光看子组件的代码时,你完全不知道它合适悄悄地改变了父组件的状态. 这在 debug 复杂
-
vue中v-model指令与.sync修饰符的区别详解
目录 v-model .sync 细微之处的区别 总结功能作用场景: v-model <!--父组件--> <template> <!--v-model 指令是语法糖--> <Child v-model="model"></Child> <!-- 把 v-model 指令展开后相当于下面的代码 --> <!-- v-model绑定的默认事件是input,默认prop是value属性 --> <Ch
-
详解VUE自定义组件中用.sync修饰符与v-model的区别
.sync修饰组件 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>vue-03</title> <!-- 引入Vue --> <link href="https://cdn.bootcss.com/bootstrap/4.1.1/css/bootstrap.min.css&q
-
如何理解Vue的.sync修饰符的使用
本文介绍了Vue的.sync修饰符的使用,分享给大家,也给自己留个笔记 案例 <div id="app"> <div>{{bar}}</div> <my-comp :foo.sync="bar"></my-comp> <!-- <my-comp :foo="bar" @update:foo="val => bar = val"></my-
-
详解Vue的sync修饰符
1 .指令 指令即 Directive,从字面意思理解就是我告诉你要做什么,就是发送了一个指令,然后由接收指令的人去做就好了.在 Vue 中的指令有个统一好认的格式,就是以 v- 开头的就是指令,如: <div v-text="x"> </div> //v-text指定标签文本指令 <div v-on:click="add"> <div> //v-on事件绑定指令 但并不是所有的指令都以 v- 开头,对于一些简写,也是
-
vue中的.sync修饰符用法及原理分析
目录 .sync修饰符用法及原理 例如 .sync修饰符的用法总结 需求描述 解决方案 .sync修饰符用法及原理 vue中我们经常会用v-bind(缩写为:)给子组件传入参数. 或者我们会给子组件传入一个函数,子组件通过调用传入的函数来改变父组件的状态. 例如 //父组件给子组件传入一个函数 <MyFooter :age="age" @setAge="(res)=> age = res"> </MyFooter> //子组件通过
-
vue中的事件修饰符once,prevent,stop,capture,self,passive
目录 vue中的事件修饰符 1. once 2. prevent 3. stop 4. capture和self 5. passive与prevent相反 vue事件处理(修饰符) 事件修饰符 按键修饰符 系统修饰键 鼠标按钮修饰符 vue中的事件修饰符 1. once 只执行一次 <div v-on:click.once='alert("1")'></div> 只有在第一次点击时会执行,再次点击不会起作用 2. prevent 阻止默认程序,比如form表单中
-
Vue中子组件向父组件传值以及.sync修饰符详析
目录 Vue中 常见的组件通信方式可分为三类 1. 之前的写法 2. .sync 修饰符 总结 传送门:Vue中 状态管理器(vuex)详解及应用场景 传送门:Vue中 $ attrs.$ listeners 详解及使用 传送门:Vue中 事件总线(eventBus)详解及使用 传送门:Vue中 provide.inject 详解及使用 Vue中 常见的组件通信方式可分为三类 父子通信 父向子传递数据是通过 props,子向父是通过 events($emit):通过父链 / 子链也可以通信($p
-
Vue中sync修饰符分析原理及用法示例
目录 不使用sync修饰符的代码示例 使用sync修饰符的代码示例 sync修饰符的原理 前几天在看别人代码时,发现了sync修饰符的妙用,特记录其用法和原理如下. 不使用sync修饰符的代码示例 父组件: <template> <div> <div v-if="show">11111</div> <h3>下面是子组件</h3> <SyncDemo :show="show" @update
-
vue中v-model和.sync修饰符的区别
目录 前言 一.v-model 1. 作用 2.v-model的本质 3. v-model的特殊用法 二..sync修饰符 1. .sync修饰符作用 2. .sync修饰符本质 总结 .sync与v-model区别是 前言 在日常开发的过程中,v-model指令是经常用到的,一般来说 v-model 指令在表单及元素上创建双向数据绑定,但 v-model 本质是语法糖.但提到语法糖,这里就不得不提另一个与v-model有相似功能的双向绑定语法糖了,这就是 .sync修饰符.在这里就两者的使用进
随机推荐
- 每个程序员需掌握的20个代码命名小贴士
- VBS教程:属性-Count 属性
- jQuery插件windowScroll实现单屏滚动特效
- Spring Boot如何优化内嵌的Tomcat示例详解
- 在Win2003中安装bind教程(部署智能DNS)
- asp .net实现给图片添加图片水印方法示例
- 如何在网站级别动态更改主题
- mysql性能优化脚本mysqltuner.pl使用介绍
- jQuery中parents()和parent()的区别分析
- Nginx下配置301重定向的正确方法例子
- PHP 实现一种多文件上传的方法
- 对于Javascript 执行上下文的全面了解
- javascript常用函数(1)
- Java中使用数组实现栈数据结构实例
- [注册表]解系统托盘区的任务栏空间
- 通过伪静态解决中文乱码问题
- C#事件实例详解
- JavaScript实现计算圆周率到小数点后100位的方法示例
- 解决新django中的path不能使用正则表达式的问题
- Spring Boot 静态资源处理方式