![3ee23bc21ed8cce27ecf190aa61d7b3e.png](https://i-blog.csdnimg.cn/blog_migrate/595ec48f1d7b1dd9b0cf9e3d528f0dcf.png)
点题:(需要从组件内部修改props的需求)
解决方案:
在子组件,监听俩处:1. 内部属性副本,改变了,触发自定义事件同步到父组件
2. 监听父组件传入的props(原属性),外部修改了原属性,同步给子组件。
Vue学习笔记-3 前言
Vue 2.x相比较Vue 1.x而言,升级变化除了实现了Virtual-Dom以外,给使用者最大不适就是移除的组件的props
的双向绑定功能。
以往在Vue1.x中利用props
的twoWay
和.sync
绑定修饰符就可以实现props的双向绑定功能,但是在Vue2中彻底废弃了此功能,如果需要双向绑定需要自己来实现。
Vue2的组件props通信方式
在Vue2中组件的props的数据流动改为了只能单向流动,即只能由组件外(调用组件方)通过组件的DOM属性attribute
传递props
给组件内,组件内只能被动接收组件外传递过来的数据,并且在组件内,不能修改由外层传来的props数据。
![6d473049550e48aa19f55e34906e985d.png](https://i-blog.csdnimg.cn/blog_migrate/d8ea9524aab448b92df173f24065d476.jpeg)
关于这一点的修改官方给的解释:
prop 是单向绑定的:当父组件的属性变化时,将传导给子组件,但是不会反过来。这是为了防止子组件无意修改了父组件的状态——这会让应用的数据流难以理解。
虽然废弃了props的双向绑定对于整个项目整体而言是有利且正确的,但是在某些时候我们确实需要从组件内部修改props的需求
案例
假设我要做一个iOS风格的开关按钮,需求就只有两个:
- 点击按钮实现 开/关 状态切换
- 不点击按钮,也可以通过外部修改数据切换开关状态,比如级联联动开关。
![0a201300b952ce5f3fa2fa5527dcf991.png](https://i-blog.csdnimg.cn/blog_migrate/91286ca5e2075c47f5c28f19651c2ee3.jpeg)

代码大致是类似这样的: