@kirill-93

Должен ли vue отслеживать изменение данных в родителе?

Есть приложение на вью, где есть главный объект и компоненты. Все это работает через vue-cli, то есть разбито по компонентам.
Я использую главный объект вью как хранилище информации, которой удобно пользоваться из всех компонентов.
Выглядит это примерно так:
new Vue({
...
data: {
    userInfo: {},
    messages: {},
    ...
}
});

Я так понимаю, что для хранения информации используется vuex, но я до него пока не дошел.
Так вот, из компонентов я получаю доступ от так:
this.$root.userInfo.name = 'Vasya';
this$root.messages.push({text: 'New message'});

И в одном из компонентов я прямо из $root вывожу все сообщения:
<li v-for="message in $root.messages">{{ message.text }}<li>

Этот код вроде бы работал, но по какой-то причине перестал реагировать на изменения в $root.messages.
Вместо этого я в компоненте завел свойство messages и в методе created присваиваю ему сообщения из $root:
#mycomponent
data: function() {
    return {
        messages: []
    }
},
created: function() {
    this.messages = this.$root.messages
}


А при изменении $root.messages эмитирую событие, которое отлавливается в этом же компоненте. В общем, если бы в компоненте отслеживались изменения из главного объекта вью, то ничего не надо было бы делать.
Скажите, это у меня что-то не так работает, или так и должно быть? И как вы поступаете в таких случаях?
  • Вопрос задан
  • 574 просмотра
Решения вопроса 1
Fragster
@Fragster
помогло? отметь решением!
нужно использовать props и emit https://jsfiddle.net/eLu0zevg/
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы