我被困在我的孩子組件(自動完成)需要更新其父(曲線)的值的情況下,父母需要更新孩子或者當使用新的曲線組件時完全重新渲染)Vue2:警告:避免直接變異道具
在我的應用程序中,用戶可以在曲線組件列表中選擇曲線。我以前的代碼正常工作,除非組件自動完成未在列表中選擇另一個曲線時更新(組件未使用父項的值更新其值)。
這個問題已經得到解決,但我得到這樣的警告:
避免直接變異的一個道具,因爲該值將被覆蓋 每當父組件重新呈現。相反,使用基於prop值的數據或 計算屬性。支柱被突變: 「值」
此警告的說明正好解釋了我期望從我的組件中得到的行爲。儘管有這個警告,但這個代碼工作得很好!
下面是代碼(的部分內容已被刪除,以簡化)
// curve.vue
<template>
<autocomplete v-model="curve.y"></autocomplete>
</template>
<script>
import Autocomplete from './autocomplete'
export default {
name: 'Curve',
props: {
value: Object
},
computed: {
curve() { return this.value }
},
components: { Autocomplete }
}
</script>
// autocomplete.vue
<template>
<input type="text" v-model="content"/>
</template>
<script>
export default {
name: 'Autocomplete',
props: {
value: {
type: String,
required: true
}
},
computed: {
content: {
get() { return this.value },
set(newValue) { this.value = newValue }
}
}
}
</script>
很多人都得到同樣的警告,我嘗試了一些解決方案,我發現,但我不能讓他們的工作在我的情況下(使用事件,改變自動完成的道具的類型是一個對象,使用其他計算值,...)
有沒有簡單的解決方案來解決這個問題?我應該忽略這個警告嗎?
:一個組件與V型工作您需要接受價值支持併發出輸入事件! –