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

В телеге нажали на пиннед, и сразу все сообщения подгрузившими

между текущим и пиннед. А если их тысячи?

14 ответов

9 просмотров

опять-таки - зависит от реализации хранения отдельно, показа отдельно.

Янис-Kondakov Автор вопроса
Agnislav Onufriichuk
опять-таки - зависит от реализации хранения отдель...

Как это, хранение отдельно, показ отдельно?

Янис Kondakov
Как это, хранение отдельно, показ отдельно?

данные хранятся, к примеру, в редаксе. Отрисовывает компонент, ему же передаётся текущая позиция. Функция компонента при скролле диспатчит экшн типа "проверить, есть ли данные в стейте для текущей позиции". Экшн проверяет, если нет - шлёт запрос на сервер. Результат отправляет в стейт, компонент ререндерится

Янис-Kondakov Автор вопроса
Agnislav Onufriichuk
данные хранятся, к примеру, в редаксе. Отрисовывае...

Это понятно. Вот сейчас у нас текущее сообщение, последнее. Мы нажали на пиннед. Она находится на 10000 сообщений раньше.

Янис Kondakov
Это понятно. Вот сейчас у нас текущее сообщение, п...

подгружается "окно" в +- несколько сообщений относительно пина. это и в телеге заметно, когда пин старый, после перехода при прокрутке сообщения догружаются из хранилища, если его нет - с бэка

Янис-Kondakov Автор вопроса
Vitaliy Ponomarev
подгружается "окно" в +- несколько сообщений относ...

А как они скролл сразу справа показывают такой маленький, как будто сразу все загрузилось?

Янис Kondakov
А как они скролл сразу справа показывают такой мал...

в телеге - скролл относительно подгруженных данных плюс примерный рассчёт высоты от текущей позиции и вниз относительно количества сообщений от текущего до последнего.

Янис Kondakov
А как они скролл сразу справа показывают такой мал...

ещё возможно делать скролл относительно общего количества сообщений

Янис-Kondakov Автор вопроса
Agnislav Onufriichuk
в телеге - скролл относительно подгруженных данных...

для этого надо высоту каждого сообщения считать. Или нет?

Янис-Kondakov Автор вопроса
Agnislav Onufriichuk
ещё возможно делать скролл относительно общего кол...

сообщения же могут быть разной высоты. Как-то не улавливаю

Янис Kondakov
для этого надо высоту каждого сообщения считать. И...

зачем каждого считать? бери высоту одно- или двухстрочного сообщения - этого хватит ))

Янис Kondakov
А как они скролл сразу справа показывают такой мал...

вообще вот неплохая статья на тему виртуализации списков https://medium.com/ingeniouslysimple/building-a-virtualized-list-from-scratch-9225e8bec120 а оттуда уже можно глубже копать

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

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

Какой-то там пердун в 90-х решил, что есть какая-то разная типизация. Кого вообще это волнует?
КТ315
49
void terminal_scroll() { memmove(terminal_buffer, terminal_buffer + VGA_WIDTH, buffer_size - VGA_WIDTH); memset(terminal_buffer + buffer_size - VGA_WIDTH, 0, VGA_WIDTH); ...
Егор
47
Всем привет! Подскажите, пожалуйста, в чем ошибка? Настраиваю подключение к MySQL. Либы лежат рядом с exe. Все как по "учебнику"
Евгений
16
А можете как-то проверить меня по знаниям по ассемблеру?
A A
132
Здравствуйте! У меня появилась возможность купить книгу "Изучай Haskell во имя добра!". Но я где-то слышал, что эта книга устарела. Насколько это правда??
E
22
Здравствуйте! Я вот на stepic решаю задачи на хаскеле https://stepik.org/lesson/8443/step/8?unit=1578 мой код import Data.List (isInfixOf) removing :: String -> [String] ->...
E
10
Камрады, кто тесно работал с vtv, хотел уточнить. Ширина column задаётся жёстко на этапе создания дерева или можно в рантайме ее менять программно (не мышкой)?
Ed Doc
10
да ладно ... что там неочевидного ? глянуть в исх-ки датасета и/или кверика чтобы понять в каком месте и как выполняется обращения к св-вам blablaSQL - минутное дело, даже е...
Сергей
7
Здесь для arm кто-нибудь кодит ?
Nothing
52
Всем привет, у меня есть сервер принимающий входящие HTTP подключения, как проверить, что подключение было через прокси или нет, есть какие то поля в заголовках по которым мо...
DS
8
Карта сайта