Очевидно, что вы пытаетесь напрямую изменить свойства реквизита.
Например:
props: { name: 'something' }
methods: {
change_name(new_name) {
this.name = new_name
}
}
Это не рекомендуется и может привести к недостаточной реактивности.
В качестве решения вы можете использовать родительское дочернее общение. Поэтому, когда вы захотите изменить реквизит, просто отправьте событие родительскому компоненту. Таким образом, приведенный выше пример должен быть:
props: { name: 'something' }
methods: {
change_name(new_name) {
this.$emit('name-updated', new_name)
}
}
И на родительском компоненте прослушайте это событие, чтобы изменить пропускаемый вами пропущенный элемент:
<child-component :name="name" @name-updated="name = $event" />
Или мой любимый способ - использовать модификатор .sync . Поэтому родительский компонент должен быть:
<child-component :name.sync="name" />
и метод дочернего компонента:
change_name(new_name) {
this.$emit('update:name', new_name)
}
Если компоненты не имеют отношения родитель-потомок, взгляните на Vue.js Event Bus или Vuex