vue 子组件直接更改 props 有啥不良后果?

1.props 不同的类型情况,如为数字,字符串,或对象类型,函数类型,直接修改props的不良后果有区别吗?

2.不加 .sync 修饰符,有啥不良后果?

阅读 5.8k
3 个回答

基本类型你修改也没用。

引用类型倒是可以修改,但是数据流向不清晰

比如两个组件都使用了同一个 prop,A 组件改了,B 组件里可能也会有变化,导致数据变化超出父组件的控制,是个隐患,容易造成问题。

1、prop是用来父子间单向数据流动的,父prop的更新会向下传递到子prop,反过来不行。
但是如果prop如果是引用类型(对象和数组),其在子组件的改变也是会导致父prop的意外修改。
这不符合单向数据流的设计初衷,使得数据流向难以把控。

另外一个,父组件每次变更时也会刷新子组件的prop,如果你修改了子组件的prop并将其在代码中使用,可能会意外的发现子prop发生了意料之外的改变,子prop又变成了父prop传入的数值,而且你很难把控改变的时机。

2、sync修饰符只是个语法糖,只有在你必须双向绑定父子组件的时候才使用,不用这个用emit和on也行,原理一样。

建议翻一翻教程,都有的东西

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题