Я создал несколько связанных Vue компонентов, которые я повторно использую в нескольких проектах. В конце концов, я хотел бы сделать это с помощью NPM или такого инструмента, как Bit, но сейчас я делаю это вручную.
Все мои компоненты просто передают данные между собой, используя реквизиты и излучения. Это стало довольно неэффективным, так как многие мои компоненты не всегда находятся рядом друг с другом, поэтому я хочу перенести их на более надежное решение. Прямо сейчас я чувствую, что мне приходится выдавать одни и те же данные несколько раз только для того, чтобы восстановить цепочку.
Благодаря чтению я знаю, что глобальная шина событий может использоваться для поддержания состояния между компонентами, или Vuex может Раньше я поддерживал общее состояние приложения, но как я делаю это на компоненты многократного использования?
В моей голове такое чувство, что если я основываю свои компоненты на любом из вариантов, то я обязуюсь всегда использовать этот компонент с глобальный автобус событий или Vuex. И, очевидно, в некоторых проектах я могу захотеть переключаться между тем, чтобы использовать один или другой, в зависимости от сложности приложения.
Как мне лучше всего подойти к этому? Нужны ли мне немного разные компоненты в зависимости от общего приложения (такое ощущение, что я теряю возможность повторного использования) или здесь есть что-то, чего я не учитываю?
Для одного из моих приложений я упростил следующее структура компонента:
Root Component
Grid
Card
FilterDropdown
Graph
В настоящее время я передаю данные в свой компонент root из API, а затем передаю их компоненту Graph через реквизиты на каждом этапе.
С другой стороны Кроме того, мой FilterDropdown получает отдельный список одного из столбцов данных и предоставляет раскрывающийся список, в котором пользователь может выбрать значение. Затем эти значения передаются 3 раза обратно в дерево в компонент root, где он используется для фильтрации данных через вычисленное свойство, которое затем передается снова с использованием тех же параметров.
Am I чрезмерно усложняющие вещи, думая, что это должно измениться? Я уже могу представить себе, как можно достичь того же, с меньшей общей путаницей, используя шину событий или Vuex, но я думаю, что потерял бы возможность повторного использования?