169 похожих чатов

Посоветуйте по архитектуре? Внутри компонента есть 2 компонента-списка, каждому из которых

передается информация откуда (из апи) брать для себя данные. Наружу каждый выдает выбранный итем списка.
Мне надо их связать, что бы список N2 фильтровался в зависимости от того, что выбрано в списке N1.

У меня несколько вариантов где это делать и как их связывать, я не уверенна, как лучше.

30 ответов

10 просмотров
Daria-Shuleko Автор вопроса

Затруднение в том, что о привязке знает только список N2 (получает среди данных по апи). Контейнер и тем более N1 - не знают

Чем выше уровень, тем лучше.

список не должен знать, откуда ему брать для себя данные, список должен просто выводить данные, которые ему дали, а фильтроваться они должны выше уровнем но если нужно именно так, то можно списку дополнительно передавать фильтр-функцию, а в ней уже фильтровать как душе угодно

Daria-Shuleko Автор вопроса
Artyom Tuchkov
список не должен знать, откуда ему брать для себя ...

Почему не должен? Я немного упростила формулировку, это именно компонент со списком и сопутствующей ему логикой. Их много, они однотипные, передавать им обработанные данные из компонента-контейнера - неудобно.

Daria-Shuleko Автор вопроса
Artyom Tuchkov
список не должен знать, откуда ему брать для себя ...

Не могу представить себе пока что как сформировать функцию, если неизвестно есть ли привязка. Мне пришло в голову только эмит от списка N2, в котором он отправляет связь, а уже по этому событию, контейнер (как-то) привязывает данные из списка N2 к пропсам списка N2

Daria Shuleko
Почему не должен? Я немного упростила формулировк...

Есть самый глобальный объект - само приложение. Остальное просто дети в дереве. Если реализовать логику (которая, к слову, изначально закладывалась в Vue) единого диспетчера, управляющего всеми детьми и данными, то достаточно просто дёргать в одном компоненте подписку на другой

Daria-Shuleko Автор вопроса
Master Craftsman
Есть самый глобальный объект - само приложение. Ос...

Сложно спорить, мне правда кажется, что в концепции вью сделано все возможное для изоляции между несмежными поколениями. Т.е. родитель-ребенок непосредственно, и больше никаких связей. (Связи есть, но системы "немножко костыль", типа шин, рефов, vuex)

Daria Shuleko
Почему не должен? Я немного упростила формулировк...

потому что дергать данные с сервера - это не задача переиспользуемого списка у тебя же вон есть контейнер, который содержит в себе эти 2 списка, почему бы в нем не сделать 2 запроса на сервер за нужными данными, а затем не передать их спискам напрямую? нужна фильтрация? фильтруешь в контейнере и дочерние списки соответствующим образом обновляются

Daria-Shuleko Автор вопроса
Artyom Tuchkov
потому что дергать данные с сервера - это не задач...

Потому что их там не 2, а X Контейнер формируется на основании схемы, получаемой по апи опять же, это поля таблицы в форме редактирования

Daria Shuleko
Сложно спорить, мне правда кажется, что в концепци...

можно поподробнее? интересные заявления

Daria-Shuleko Автор вопроса
Stanislav S
Шито?)))

Как глобальный объект может взаимодействать с компонентом вложенным в компонент? Например.

Daria Shuleko
Потому что их там не 2, а X Контейнер формируется ...

ну так делай не 2 запроса, а X запросов, есть Promise.all или allSettled для этих целей если списки взаимосвязаны и должны обмениваться своими данными в контейнере, то зачем изолировать эти данные от контейнера?

Daria Shuleko
Как глобальный объект может взаимодействать с комп...

Просто подумай о том, что xml сделан в виде дерева от корневого элемента, тогда как сам JS при присвоении переменной объекта, не копирует его а делает указатель. Другими словами сам JS подсказывает тебе путь

Daria-Shuleko Автор вопроса
Artyom Tuchkov
ну так делай не 2 запроса, а X запросов, есть Prom...

Потому что это очень удобно. Это выпадающие списки селекторов. Да, можно впихнуть в контейнер, но выгода этого не очевидна.

Daria Shuleko
Потому что это очень удобно. Это выпадающие списки...

как это не очевидна, если это решает твою проблему с фильтрацией?

Daria-Shuleko Автор вопроса
Dinar Galimov
vuex-cache?

Это есть, но картину не меняет

Daria-Shuleko Автор вопроса
Daria Shuleko
Потому что это очень удобно. Это выпадающие списки...

Ты не с того края подошла. Да, дробить полезно для тонкой доточки компонента (отдельно таблица, строки, фильтр, столбцы), но клиенту нужно передать уже собранную из этих компонентов готовый суперкомпонент, который реализует всю логику всего бизнес-процесса конкретного объекта.

Daria-Shuleko Автор вопроса
Master Craftsman
Просто подумай о том, что xml сделан в виде дерева...

Укатывать в объекты и протаскивать? Ну можно, но это вот прямо концептуально предусмотренные vue способ?

Daria Shuleko
Укатывать в объекты и протаскивать? Ну можно, но э...

Кек. Какой концептуальный путь? Если бы был концептуальный путь, то не было бы такой горы фреймворков)))

Daria-Shuleko Автор вопроса
Ivan Burykin
Vuex - тебе ж писали

о vuex я сама и писала. Это очевидно.

Daria-Shuleko Автор вопроса
Master Craftsman
Кек. Какой концептуальный путь? Если бы был концеп...

Ну... Чего-то разработчики vue себе предстваляли, начиная его создавать.

Daria Shuleko
Ну... Чего-то разработчики vue себе предстваляли, ...

Они представляли себе только три вещи: отображение, данные, обработчик данных

Похожие вопросы

Обсуждают сегодня

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
Ребят в СИ можно реализовать ООП?
Николай
33
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
у вас два процесса. один посылает другому сигнал. у вас есть код обоих процессов? если всё не так - расскажите как оно на самом деле. а именно кто кому чего, есть-ли консоли,...
Karagy
6
Карта сайта