鍍金池/ 問答/HTML/ vue中直接修改props中的值并未給出警告,為啥

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

vue官網(wǎng)在講解props的單向數(shù)據(jù)流時提到:

額外的,每次父級組件發(fā)生更新時,子組件中所有的 prop 都將會刷新為最新的值。這意味著你不應(yīng)該在一個子組件內(nèi)部改變 prop。如果你這樣做了,Vue 會在瀏覽器的控制臺中發(fā)出警告。

但是我測試,直接修改props的值,并未給出任何警告。
大家有遇到嗎?

回答
編輯回答
離夢

2018年8月19日 22:04
編輯回答
終相守

單向數(shù)據(jù)瀏覽不允許你做修改操作,如果可以修改,每個組件都能對數(shù)據(jù)進(jìn)行操作,這樣無法有效的追蹤數(shù)據(jù)的變化

2017年12月8日 21:03
編輯回答
茍活

如果props傳入的值是引用類型,在子組件中改變其元素,不改變引用,那么不報錯。
如果是普通類型,那么在修改時瀏覽器控制臺會有報錯信息

2017年5月20日 11:43
編輯回答
陌顏

接著往下看

在兩種情況下,我們很容易忍不住想去修改 prop 中數(shù)據(jù):

Prop 作為初始值傳入后,子組件想把它當(dāng)作局部數(shù)據(jù)來用;

Prop 作為原始數(shù)據(jù)傳入,由子組件處理成其它數(shù)據(jù)輸出。

對這兩種情況,正確的應(yīng)對方式是:

定義一個局部變量,并用 prop 的值初始化它:

props: ['initialCounter'],
data: function () {
  return { counter: this.initialCounter }
}
定義一個計算屬性,處理 prop 的值并返回:

props: ['size'],
computed: {
  normalizedSize: function () {
    return this.size.trim().toLowerCase()
  }
}
2017年11月10日 14:21