Я экспериментирую с Vue Router, и у меня появляется неприятный запах. Необходимо узнать в сообществе, правильно ли я поступаю.
До Vue Router у меня был родительский компонент, получавший событие от своего потомка и обновляющий свойство данных моего основного приложения:
<number-pad v-on:button-click="updateTotal($event)"></number-pad>
Не беспокойтесь о деталях, но это работало.
Когда я перенесу это в Vue Router, оно будет выглядеть примерно так ...
const pageOne = {
name: "page-one",
template: `
<div>
<number-pad v-on:button-click="updateTotal($event)"></number-pad>
</div> `
};
... со следующим в моем HTML:
<router-view></router-view>
Я намного больше ухожу, но вы понимаете суть.
В любом случае, это, конечно, будет прекрасно отображаться и обновлять внутренние компоненты компонента, но директива больше не будет взаимодействовать с основным свойством данных, если я не настрою некоторый код для вывода данных еще на один уровень к компоненту <router-view>
:
<router-view v-on:button-click="updateTotal($event)"></router-view>
Теперь это будет работать (наряду с другими настройками кода я не пишу ради краткости).
Другими словами, когда дело доходит до отношений компонентов, я перешел от родителя -> дочерних отношений до Vue Router к дедушке -> родителю -> дочерним отношениям после.
Должен ли я серьезно дублировать все мои привязки и директивы этому новому прародителю <router-view>
, чтобы связываться с основным свойством данных?
Это пахнет очень плохо для меня, а также является огромной болью в а **.
Что я могу сделать, чтобы улучшить ситуацию? Есть ответ: Vuex! Или ответ: нет, вы допинг, вы упустили что-то простое.
Спасибо.