Vue官方api已经说明了prop是单向数据传递的,那么问题是:
如果当前父组件传了一个引用类型,子组件通过prop接受后,是否需要在data中再次声明?
提出需求的场景是,需要在子组件中更改prop(不通过emit,是否本身就违背了单向数据流...)
如果此时在data中声明的变量是引用类型,那么去编辑或者修改维护这个data时,毫无疑问prop本身的值也会改变,除非在data中深拷贝prop的值(开销太大),这样更改data后,还可以通过prop的原始值将其复原(有回退操作的需求,或者撤销操作的需求)
综上,想问一下 子组件中是否有必要在data中再声明,引用一下prop?
如果有,大概会是一个怎样的场景?
场景就有问题,永远不要修改prop。prop是别人的数据,对于子组件来说,就是只读的。如果需要变更,只能通知父组件来修改它。
你可以通过计算属性来简化一下流程。
比如一个自定义输入框组件
模板
脚本
引用类型的prop同理,你可以用
...
操作符拷贝一份emit出去。例如