В документах Vue есть раздел об одностороннем потоке данных: https://vuejs.org/v2/guide/components-props.html#One-Way-Data-Flow
Здесь объясняется, что вы не должны мутировать проп.Кроме того, он говорит:
Пропеллер используется для передачи начального значения;потом дочерний компонент хочет использовать его как локальное свойство данных.В этом случае лучше всего определить локальное свойство данных, которое в качестве начального значения использует проп:
В нижней части этого раздела есть примечание:
Обратите внимание, что объекты и массивы в JavaScript передаются по ссылке, поэтому, если свойство является массивом или объектом, изменение объекта или массива внутри дочернего компонента повлияет на родительское состояние.
IЯ рассматриваю ситуацию, когда у вас есть реквизит, который является объектом (или массивом), и вы определили свойство локальных данных, которое использует реквизит в качестве исходного значения:
props: {
initialMyObject: {
type: Object,
required: true
}
},
data() {
return {
myObject: this.initialMyObject
}
}
Если я изменю данныевещь myObject
, так как это объект, сам пропеллер будет мутирован.Следовательно, это то же самое, что «мутирование опоры» и чего следует избегать?Желательно ли в этом случае генерировать событие всякий раз, когда требуется изменить объект (или использовать Vuex)?
Заранее спасибо за помощь в этом.