Javascript.RU

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

вопрос про хрю или опять react
вот такой вот у меня вопрос. хотя думаю, фиг кто что напишет...
итак имеем
1 компонент react назовем ее "форма"
2 внтури один из компонентов назовем ее таблица
возможны несолько реализаций, но как то все не складывается.
Первая
сам компонент "таблица" сделан исходя из абстрактных данных. Этот компонент обеспечивает, добавление строк и их удаление, поиск, всякие пользовательские кнопки, управление курсором таблицы. Вывод данных осуществляется "окном", т.е. не все что в таблице б.д. а кусочек.
В определенных случаях компонент таблица обращается к основной форме за "подчиткой" данных

Компонент "форма" уже конкретно знает что это за таблица (например справочник адресов). Он (компонент "форма") считывает данные,и обеспечивает дочитку данных по запросу.

Встал вопрос где хранить номер активной видимой строки таблицы. В какой компоненте.
1 вариант - в компоненте "таблица". там же обеспечивается перемещение курсора. Но в этом варианте, когда осуществляется дочитка данных в основной форме для корректной визуализации необходим доступ к этой переменной из основного компонента. И тут начинаются сопли.... плохо.
2 вариант - храним номер активной строки в компоненте формы. там это дело хранится в структуре типа:
this.state.component['address'] =
      { feature: (props)=> { return (<__table {...props} />)},
        props  :{
          frameDisable: this.state.frameDisable,
          topCommand  :{ title :'панель кнопок(нажми меня) :',
                                   button:{ new:{show:true},refresh:{show:true,disable:false}}},
          topUserCommand : { padlo:{ title:'фуфля', show:true, disable: true,img:delLine  }},
          headRow        : [{title:"номер",height:'120px',find:true},
                                  {title:"фигамер",height:'160px'},
                                  {title:"долбомер",height:'200px',find:true},
                                  {title:"типа метры",height:'auto'},
                                  {title:"попандос",height:'200px'}],
          dataRow        : [],
          preEventHandler: this.preEventHandler.bind(this)
        },
        upload:{ beginRead:0, sizeRead:25, sizeUpload:1, trendLastUpload:null, sizeLastUpload:null }
      }

и выводится в компоненте "форма" как то так:
{ Object.keys(this.state.component).map((index)=>{
            return(
              <React.Fragment key={index}>
               { this.state.component[index].feature( this.state.component[index].props )}
              </React.Fragment>
            )})
          }

Как бы все замечательно работает! Но! вообще складывается такое нехорошее ощущение что, все чем нужно управлять, все нужно тащить на верхний уровень.
Ну собственно вот главный вопрос
Я создаю другую форму, и в ней тоже есть таблица. И я хочу использовать эту же компоненту. Но в этой другой таблице не нужно дочитывать данные. она маленькая. Но я все равно вынужден ПОМНИТЬ и в основной форме дописывать все пропсы которые никогда в ней не будут использоваться. Нехорошо. Хочу во второй форме чтобы не вспоминать про данные курсора,
чтобы оно само крутилось, т.е. курсор должен быть в базовом абстрактном классе - "таблица".
Есть другой еще вариант. Например делаеМ производный класс от класса таблица, Назовем его адреса. И он полноценно будет уже знать о данных и может нормально ими управлять, считывать
и т.д. И все будет находится в классе таблица. Все как и надо. Но и здесь есть но!
Если мне вдруг понадобится сохранить таблицу. Ну например у меня некая табличная форма которая потом будет сохранена в б.д. Таблица ничего о сохранениях знать не может.
Она даже не может узнать в какой момент это нужно сделать. В основной форме нажимается кнопка сохранить... и тут мне в основной форме нужно получить данные из вложенной компоненты.
Как? да никак..... без мухлежа - никак........
Советы типа context не давать. Вот на flux еще посматриваю.
Народ!!!!! Отзовись!!!
Ответить с цитированием
  #2 (permalink)  
Старый Сегодня, 09:08
Аватар для fxobject
Кандидат Javascript-наук
Отправить личное сообщение для fxobject Посмотреть профиль Найти все сообщения от fxobject
 
Регистрация: 01.03.2021
Сообщений: 145

нихто и ницего не пасаветовал.
кароч. в решении данного вопроса, придерживаюсь правила сохранения принципов ООП, хотя вот в последнее время все больше склоняюсь что react - это функциональное программирование.
Итак, если имеем некую форму, в которой необходимо сделать таблицу - мы сначала создаем абстрактную компоненту "таблица". Она много чего умеет, единственно что она не знает - данные с которыми должна работать. Для конкретного наполнения данной таблицы мы создаем производный класс. Он тоже таблица, но уже знает все о данных. Собственно в нем мы и реализовываем основные функции - это чтение данных и дочитывание данных при скроллинге. При этом, управление чтение и дочитыванием осуществляется тем же самым абстрактным классом. Получается - вещь сама в себе. И, да, нужно делать компоненты для каждой таблицы которую необходимо вывести в формах. Далее, форма. Компонент форма создает у себя внутри дочерний компонент КОНКРЕТНАЯ таблица (не абстрактная). И эта таблица замечательно без всякой поддержки работает в форме.
Остается решить один вопрос - как получить данные из таблицы в форме?
Например, по нажатию клавиши enter осуществить выбор строки, сохранить набранную таблицу... и т.д. Т.е. родитель должен получить данные из дочерней компоненты.
Сразу скажу - в react это сделать нельзя. Т.е. по идее имея дочерние классы/объекты (компоненты) в рамках ООП - вы не можете к ним обращаться для получение какого либо API.
собственно flux или reduxe именно этим и занимаются. Но не совсем...
Самому такой "мостик" придумать несложно... унифицировать некий интерфейсик по которому базовый компонент может обратится к дочернему с вопросом типа - "какая там у тебя текущая активная строка?"
ну и я так понимаю никому это нафиг не надо. ну и ладно. пойду к сдачам готовится...
p.s. и кстати народ!!! никто мне не подскажет почему до сих пор пишут на php? вот честно, без проблем писал на нем, но думаю, что это уже язык прошлого. Потому что bitrix? наштампованы всякие джумлы? Люди, кто общается с битриксом, ну подскажите им что уже пора менять платформу.
Ладно, в принципе вопрос решил, впереди лето, заплывы, куча радости ))). Всем добра
Ответить с цитированием
Ответ


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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
вопрос стратегии React fxobject Библиотеки/Тулкиты/Фреймворки 3 16.04.2025 08:54
Sr React Native Engineer, $4k-$6k net, удалённо или переезд в Варшаву cabin_crew Работа 0 08.08.2022 19:26
таки опять вопрос про this LittlePony Общие вопросы Javascript 12 20.08.2012 16:14
Вопрос: И опять про offsetLeft... sigurd Общие вопросы Javascript 11 04.10.2010 14:06
Вопрос про отправку данных методом Post QQQ AJAX и COMET 1 15.07.2009 23:27