Vue第8篇,Vue中的父子闭环和.sync修饰符(父传子,在子组件中修改父组件状态和.sync修饰符)

简述:在Vue.js中,“父子闭环”和.sync修饰符是关于组件间通信的重要概念,特别是在处理父组件和子组件之间的数据流和状态同步时。这里来记录一下


Vue.js ~ 第 8 篇    ——    Vue中的父子闭环和.sync修饰符

一. 父子闭环

Vue.js遵循“单向数据流”的原则,这意味着数据应该从父组件向下流动到子组件,而子组件不应该直接修改父组件的数据。然而,在某些情况下,你可能需要子组件能够影响父组件的状态,这就形成了所谓的“闭环”。

1. 父传子,在父组件标签上绑定一个属性,传递值:

//data数据
lineBtnFlag:-1,
//父传子
:btnFlag="lineBtnFlag" 


2. 子组件props接收,和data同级:

props: ["btnFlag"],       
//子组件接收,可以使用this.btnFlag调用;


3. 子组件的事件方法,使用$emit来调用父组件定义方法alterFather,传值:

chosePassFather() { this.$emit("alterFather", 1); },
//传修改的值给父组件


4. 父组件的自定义方法alterFather:

@alterFather="passSon" 
//父组件标签的自定义方法


5. 父组件的自定义事件passSon,用来接收子组件的值,这时flag = 1,然后再传递给子组件形成闭环:

passSon(flag) { this.lineBtnFlag = flag; }
//把子组件传过来的值也就是1再回传给子组件形成闭环,这样就修改了父组件的属性,
//其实就是父传子,子传父,父再传子,这样就形成了闭环

二. .sync修饰符

.sync修饰符是Vue.js中用于简化上述闭环过程的一种语法糖。它允许你以更简洁的方式实现子组件到父组件的数据同步。

所以在子组件修改父组件状态时,也可以使用.sync修饰符:

//1、父传子
:btnFlag.sync="lineBtnFlag"
//2、子组件接收
props: ["btnFlag"],
//3、在子组件更新btnFlag,值为1
this.$emit("update:btnFlag", 1); 

使用场景不同,自己斟酌。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Vue ,.sync 是一个语法糖,它能够简化父子组件之间的数据传递。.sync 修饰符实际上是一个双向绑定的简写形式,它会自动创建一个名为 update:propName 的自定义事件,并且在组件监听这个事件,然后更新组件的数据。 例如,在组件使用组件时,可以通过 v-bind.sync 修饰符组件的数据与组件的数据绑定在一起: ``` <template> <ChildComponent :message.sync="messageFromParent"></ChildComponent> </template> ``` 这里的 .sync 修饰符会自动将组件的 message 属性与组件的 messageFromParent 属性进行双向绑定,并且在组件监听名为 update:message 的自定义事件,以更新组件的数据。 ``` <template> <ChildComponent :message.sync="messageFromParent"></ChildComponent> <button @click="updateMessage">Update Message</button> </template> <script> export default { data() { return { messageFromParent: 'Hello World' } }, methods: { updateMessage() { this.messageFromParent = 'Hello Vue' } } } </script> ``` 在子组件,可以通过 $emit() 方法触发 update:message 事件,以更新组件的数据。 ``` <template> <div> <input type="text" v-model="message"> <button @click="$emit('update:message', message)">Update Message</button> </div> </template> <script> export default { props: { message: { type: String } } } </script> ``` 这样,组件组件之间就可以通过 .sync 修饰符实现双向数据绑定了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

北城笑笑

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值