为了账号安全,请及时绑定邮箱和手机立即绑定

vue中直接修改props中的值并未给出警告,为啥

vue中直接修改props中的值并未给出警告,为啥

白衣染霜花 2018-08-18 15:36:13
vue官网在讲解props的单向数据流时提到:额外的,每次父级组件发生更新时,子组件中所有的 prop 都将会刷新为最新的值。这意味着你不应该在一个子组件内部改变 prop。如果你这样做了,Vue 会在浏览器的控制台中发出警告。但是我测试,直接修改props的值,并未给出任何警告。大家有遇到吗?
查看完整描述

2 回答

?
茅侃侃

TA贡献1842条经验 获得超21个赞

如果props传入的值是引用类型,在子组件中改变其元素,不改变引用,那么不报错。
如果是普通类型,那么在修改时浏览器控制台会有报错信息

查看完整回答
反对 回复 2018-08-19
?
哔哔one

TA贡献1854条经验 获得超8个赞

接着往下看

在两种情况下,我们很容易忍不住想去修改 prop 中数据:

Prop 作为初始值传入后,子组件想把它当作局部数据来用;

Prop 作为原始数据传入,由子组件处理成其它数据输出。

对这两种情况,正确的应对方式是:

定义一个局部变量,并用 prop 的值初始化它:

props: ['initialCounter'],
data: function () {  return { counter: this.initialCounter }
}
定义一个计算属性,处理 prop 的值并返回:

props: ['size'],
computed: {
  normalizedSize: function () {    return this.size.trim().toLowerCase()
  }
}


查看完整回答
反对 回复 2018-08-19
  • 2 回答
  • 0 关注
  • 3101 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信