, может кто подскажет , использую Vue 3 + Vite + TS
есть такая ситуация что у меня есть 3 компонента
1) Компонент А
- он использует компонент Б
- компонент Б в свою очередь использует А-1 (хотя хотел бы использовать всё тот же А , только передав ему ключ что в место себя же нужно использовать компонент Г но нет , если сделать импорт А, всё ломается)
2) Компонент А-1
- использует в место Б , компонент Г
компонент А-1 по коду отличается от компонента А только , тем что в разметке использует другой компонент , но модель и всё остальное одинаковое, По сути они копии, с разницой только в том что у них разные импорты для исключения цикличной зависимости.
Компонент А-1 по сути был придуман только потому что я не мог циклично ссылаться в Б на А.
можно ли как то определить абстрактный компонент и вынести весь общий функционал в него ?
или что лучше , подскажите возможно ли в компоненте Б , иметь ссылку на A для образования древовидной структуры вложенности , (она будет не бесконечной как таковой , отсечётся рендер следующей итерации компонента Б по условию) ,
Сходу - пробовать слоты Или передавать пропсом из А в Б флаг/ключ , Б передает дальше этот флаг А, и с ним А отображает Г Либо через v-if, либо <component :is />
так то я и хотел сделать ... но если в компоненте Б , я делаю импорт компонента А , то всё светится красным сразу
из-за этого и пришлось сделать, копию SupervisorFull , только там нет уже ссылки на ClientFormBlockG , в место него там ClientFormBlockС но я хотел бы просто добавить в компонент SupervisorFull этот ClientFormBlockС а рендер ClientFormBlockG отсекать по переданному props
Вы делаете степпер-форму?
не совсем понял что вы имеете в виду ну суть там такая Форма Руководотель , у неё есть блок Г , в этом блоке есть тоже Рукводитель только без блока Г в место него должен отобразится другой С так вот хотелось переиспользовать компонент Руководителя , но не могу ссылаться на него :(
Жди, пока TS гуру проснутся и ответят
уповаю на их гуровитость :) а то что то я в замешательстве )))
отвечу сам на свой же вопрос :) подсказали добрые люди для того что бы это работало достаточно зарегистрировать компонент глобально , тогда отпадёт необходимость передавать его в секции components (конструкторе) делается это через app.component("SupervisorFull", SupervisorFull);
смотрите чтобы за такое решение вас не уволили)
не знаю, мне кажется это не оптимальное решение
Обсуждают сегодня