Как указано выше, получение данных в родительском объекте, а затем передача его как prop
s может быть немного болью. Взамен этой боли мы получаем лучший дизайн, представьте ситуацию вроде этого: родительский компонент имеет несколько дочерних компонентов, он сам извлекает данные и передает данные детям. Здесь мы получаем «боль», заявленную ранее, но мы получаем: при изменении API данных мы можем редактировать только файл родительских компонентов, чтобы заставить его работать снова, детям не нужно изменять, пока родительский интерфейс подчиняется интерфейсу (event
s и prop
) между ними, которые мы ранее определяли. (Проще сравнить, если бы мы сделали ребенок, чтобы принести сами данные)
В общем, следует ли принять проект, который приносит больше моделирования, больше коды, более мышления к нам, зависит от того, ли это будет приносят пользу команде, учитывая всю жизнь проекта.Поэтому эти большие системы часто имеют тонны дизайна, потому что они должны поддерживаться многими людьми через годы. Но если это проект выброса, такой как сценарий для перемещения некоторых файлов для меня в моем повседневном рабочем процессе, почему бы не грязный, но рабочий код?
Кроме того, дочерние компоненты, которые мы обсуждали, получая реквизит, рендеринг самих себя, имеют вид pure function
s, то есть выводят то же самое, если вводятся одинаково, но многократно повторяются. Как и то, что нам нравится в functional programming
, они часто просты по форме, просты в обслуживании, но им нужно приложить дополнительные усилия и сначала написать их, чтобы адаптировать их к этому нечистому миру.
Но как насчет мутаций? Если компонент получает состояние хранилища как свойство и должен применить к нему мутацию, компонент все равно должен получить доступ к глобальному хранилищу. Должны ли мы передать все хранилище (а не только store.state) только компонентам? – Charles
@Charles Передача всего магазина бессмысленна. Также дочерний компонент никогда не должен мутировать свои реквизиты. Если вы проверите мой ответ и получите концепцию, тогда это не вопрос. – CodinCat
Как компонент должен запускать мутацию хранилища из компонента, например: $ store.dispatch ('refreshSomething'), данные передаются как свойства? Это все еще пара компонентов/хранения вместе, не так ли? – Charles