vue 2.x组件属性props如何实现双向绑定呢?
发布于 7 年前 作者 FlyerJay 13532 次浏览 来自 问答

好像2.0之后props里面的属性就不能在组件内部改变值了,只能通过外部传入,但是有时候组件内部也需要修改这个值并反应给父组件要怎么做呢。

5 回复

2.x 是推荐单向数据流而不是双向绑定的, 如果父组件需要子组件在某个时机修改值, 可以选择通过props传递一个回调函数给子组件, 让其在指定时机触发, 回调函数的内容由父组件决定, 比如更新你想要的那个值

@yinxin630 除了这种方式,有没有更好的,比如我不用prop,用其他的,因为回调太多也是麻烦事

@FlyerJay event bus或者vuex

来自酷炫的 CNodeMD

试试 v-model 语法糖

  1. 从父组件传入 v-model
  2. 子组件通过 value 接收参数
  3. 子组件通过 this.$emit('input', newValue) 同步 v-model 的值

除了event bus或者vuex,还有两种方法 1.参数object形式,修改object时,vue会认为对象地址没变,从而对象就没有改变,完美避开了双向绑定 2.采用内部data控制,参数改变时,用watch同步data,在子组件内部,形成伪双向绑定效果

回到顶部