Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 07.07.2026, 23:23
Аватар для fxobject
Профессор
Отправить личное сообщение для fxobject Посмотреть профиль Найти все сообщения от fxobject
 
Регистрация: 01.03.2021
Сообщений: 156

зацикливание импорта
кароч! имеем задачу на react. реализована таблица, в которой ячейка таблицы представляет собой компонент выбора элемента таблицы базы данных (справочника). Т.е. в этой ячейке кнопицка, при нажатии на которую открывается модальная форма выбора из таблицы sql (т.е. тоже таблица)
краткий импорт в row.js такой ячейки:
__inputSelect ->__selectPopandos->__select ->__sqlTable->__table->__tableList ->__row

для умных хочу подчеркнуть - это не наследование классов - это импорт.
как мы видим - зацикливание импорта. Но удивительно все собирается и работает.
Затем - хотим чтобы в этой ячейке был не просто выбор из справочника, а чтобы можно было выбрать один из нескольких справочников и потом выбрать из этого справочника. т.е.
в ячейке появляется select, что то типа такого
<option value="1">справочник 1</option>
<option value="3">справочник 2</option>
<option value="2">справочник 3</option>
Выбираешь вид справочника и потом собственно можешь выбрать значение из базы. Надеюсь - понятно.
Так вот для этого делаем производный класс от
__inputSelect например __inputCombo
и дальше все та же цепочка
так вот в этом случае получим ошибку при сборке.
Так вот вопрос - собственно почему не возникает ошибка при
сборке в первом случае. Там ведь та же самая циклическая ошибка.
Ну и собственно говоря - а как надо?
Как ни крути но:
имеем ячейка таблицы, в ней input и кнопка. при нажатии на кнопку открывается модальный диалог и в ней таблица, в этой таблице - ячейка........... и импорт (не наследование) крутится по кругу.
рабочее решение в файле с определением __inputSelect ниже определить__inputCombo. Так работает. по другому никак не получается
Ответить с цитированием
  #2 (permalink)  
Старый 08.07.2026, 08:49
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,304

Сообщение от fxobject
Так вот вопрос - собственно почему не возникает ошибка при
сборке в первом случае. Там ведь та же самая циклическая ошибка.
Сборщик не всегда дает ошибку при зацикливании...

Сообщение от fxobject
Ну и собственно говоря - а как надо?
Убрать зацикливание импорта...

Более подробно расписано вот в этой статье.
https://habr.com/ru/articles/852680/
Ответить с цитированием
  #3 (permalink)  
Старый 08.07.2026, 13:18
Аватар для fxobject
Профессор
Отправить личное сообщение для fxobject Посмотреть профиль Найти все сообщения от fxobject
 
Регистрация: 01.03.2021
Сообщений: 156

как бы прочитал, но собственно природа проблемы - понятна. Т.е. нужен метод (инструмент) для подобного. по предложенной статье, моем случае ситуация немного отличается. т.е. их методика не подходит. Не суть. Нашел два рабочих варианта. И что самое интересное, в одном из вариантов все иморты остались как было (при возникновении ошибки) изменилось только наследование в классе.
т.е. был класс inputCombo extends inputSelect
сделал по другому - inputCombo extends interface
а внутри inputCombo :
<__inputSelect>
<div className={'inputCombo'}>
<select>
{ this.props.select.map((elem,index)=>{
return <option value="index">{elem.displayName}</option>
})}
</select>
</div>
</__inputSelect>)

так даже более правильно стало.
но при этом все import остались на месте и та самая циклическая ссылка она также по идее должна остаться. Но проект собран.
странно
пока не докапаться. но формум в попандосе
Ответить с цитированием
  #4 (permalink)  
Старый Вчера, 01:31
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,618

fxobject, для разных сборщиков есть разные circular dependency plugin и т.п, погугли для своего. Они тебе покажут где есть цикл.

Почему заработало с interface? (предположительно, конструкция extends interface не рабочая)
Потому что interface - это typescript, а typescript это надстройка актуальная только во время разработки. Все чисто-типовые импорты исчезнут при компиляции и не создадут циклов в рантайме. Самому же ts циклы не страшны - он держит проект в памяти целиком.
__________________
29375, 35

Последний раз редактировалось Aetae, Вчера в 01:35.
Ответить с цитированием
Ответ


Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Зацикливание при использовании this.getStore().load() Ambassador ExtJS 6 25.10.2018 11:28
Зацикливание при клике по ссылке.Как исправить? technoir Общие вопросы Javascript 4 27.02.2017 21:07
Зацикливание функции setTimeout MininAS Общие вопросы Javascript 19 14.10.2015 00:02
зацикливание карусели owl Meanna jQuery 4 24.02.2014 14:59
Как убрать зацикливание плавающого блок на jqyery. Yatsenco Общие вопросы Javascript 1 07.11.2010 14:23