Dmitry
насколько я помню там еще 1 версия была
George
я даже на старте приложения выгружал ресурсы изображений и подсовывал в source, но и это не дало ничего, только пернос в ассеты решил проблему
Можно тут чуть подробнее? Столкнулся сейчас с тем же, пока планирую загружать асинхронно картинки в начале (expo, у них там пример). Что то ещё нужно сделать?
Dmitry
Насколько я это понимаю, то FlatList при посторении дерева начинает грузить ресурсы изображений и, несмотря на то, что отрисовывается, скажем, 10 элементов, он еще догружает ресурсы отсюда и лаги/тормоза/итд. Вопрос в том, почему этого не происходит при использовании залинкованных ресурсов.
Aleksei
что значит залинкованных ресурсов они как бы один фиг все в архиве, а require вообще просто цифру возвращает, для этого даже достаточно бандл посмотреть если уж в чем и дело, так это в том как Image резолвит ресурсы из require в нативке
George
ну если тоже самое., то не поможет
А что значит «положить в ассеты» в контексте этой задачи?
Gena
что значит залинкованных ресурсов они как бы один фиг все в архиве, а require вообще просто цифру возвращает, для этого даже достаточно бандл посмотреть если уж в чем и дело, так это в том как Image резолвит ресурсы из require в нативке
Вот они по ходу перестали возвращать цифру или изначально под этим что-то другое подразумевали (я сейчас проверял с react-native@0.58.5 и metro@0.49.2), получается так (эх, не хотел это публиковать, надеялся, что Никита сам проверит, ну ладно, раз уж начались разборки): // чтоб всю ф-цию не постить _dependencyMap[9] = 346 _react.default.createElement(_reactNative.Image, { source: _$$_REQUIRE(_dependencyMap[9]) }) // и ниже сам модуль с картинкой: __d(function (global, _$$_REQUIRE, _$$_IMPORT_DEFAULT, _$$_IMPORT_ALL, module, exports, _dependencyMap) { module.exports = _$$_REQUIRE(_dependencyMap[0]).registerAsset({ "__packager_asset": true, "httpServerLocation": "/assets", "width": 25, "height": 25, "scales": [1, 2, 3], "hash": "f68c85203ed3a3145a542468540053d9", "name": "idea", "type": "png" }); },346,[166]);
Gena
Там действительно интересна ф-ция _$$_REQUIRE - она довольно длинная, чтоб её всю писать сюда, но вроде линейная и тормозить там нечему. Сейчас попробую её исходники накопать в github
Aleksei
на первый взгляд выглядит как будто больше мета информации стали держать
Gena
Ага
Gena
В любом случае потом вот этот объект с параметрами картинки проходит через resolveAssetSource и улетает в натив.
Gena
Но через resolveAssetSource проходит любой source у Image и там я каких-то особенностей тормозящих __packager_asset вроде не видел.
Aleksei
судя по тестам там вообще просто к uri приводится https://github.com/facebook/react-native/blob/1151c096dab17e5d9a6ac05b61aacecd4305f3db/Libraries/Image/__tests__/resolveAssetSource-test.js
Dmitry
Но, тем не менее, факт остается фактом
Dmitry
для меня это тоже абсолютно нелогично
Dmitry
вот что я писал тогда
Dmitry
Картинки лежали локальному в корне проекта, подключались через require. Сильно не копался, но пробовал разные варианты загрузки ресурсов. Так как в require нельзя передавать переменные, то был объект { 1: require("./1.png"), ... } по котором пробегался FlatList и создавал итемы <Image source={icons[key]} />. Причём баг скролла только при первом открытии. Дальше, была попытка предзагрузить ресурсы картинок на старте приложения, что в целом ускоряло оживление скролла, но замедляло старт приложения на 2 секунды, блокировался причём на сплэшскрине. Дальше были попытки использовать не FlatList, но я так и не получил нужного результата. По всей видимости require блокирует тред. Именно поэтому лочится скролл. И вообще вся эта кривота
Aleksei
Xcode automatically tries to optimise resources living in asset catalogs (yet another reason to use them). Developers can choose from lossless and lossy compression algorithms
Gena
Андроид тоже оптимизирует, то что в assets кладется
Gena
Но вот эти оптимизации, думается, заметны были бы только при использовании ассетов из натива (не через Image). Это предположение.
Dmitry
мы об одном и том же говорим?
Dmitry
я не использовал asset:// и file://
Gena
И да и нет... последние две записи про другие оптимизации...
Dmitry
В люьом случае, мне нужно воспроизвести это на актуальных версиях библиотек и тогда будет о чем поговорить, может уже не воспроизведется
Gena
Нашел этот _$$_REQUIRE только кажется в бандле его читать легче 🙂
Gena
https://github.com/facebook/metro/blob/v0.49.2/packages/metro/src/lib/polyfills/require.js#L141
Dmitry
Нашел этот _$$_REQUIRE только кажется в бандле его читать легче 🙂
... const verboseName = moduleId; moduleId = verboseNamesToModuleIds[verboseName]; ...
Dmitry
прикольно
Gena
Да, это всё не попадает в продакшн, а читать тяжело )
Dmitry
const a = b; <- string b = aToB(a); <- number
Dmitry
и это все с ts
Danila
День добрый! Скажите, а как можно (и можно ли вообще) сделать фоновые задачи? Например, при достижении какого-то времени чтобы прозвенел будильник?
Alexander
Уже спрашивал, но ответа так и не дали. Мне во flatlist нужно после каждых трех элементов отображать другой рандомный блок из массива. Переопределял renderItem и смотрел на индекс, но проблема в том, что постоянно перерисовываются элементы и блок из массива тоже меняется. Хотя должно сохраняться, какой блок появляется
Alexander
Может есть какие модули?
Gena
Уже спрашивал, но ответа так и не дали. Мне во flatlist нужно после каждых трех элементов отображать другой рандомный блок из массива. Переопределял renderItem и смотрел на индекс, но проблема в том, что постоянно перерисовываются элементы и блок из массива тоже меняется. Хотя должно сохраняться, какой блок появляется
Хотели "рандомный" вот и получили... вам сперва надо задачу правильно сформулировать. И в FlatList уже отдавать модель данных, готовую к рендеру, а менять и готовить эту модель совсем в других местах ) И тут не может быть никаких модулей... это ваша бизнес-логика
Alexander
разбей на чанки по 3 и отрисуй в SectionList
Просто элементов много, к тому же еще и подгружаются. Каждый раз разбивать, вставлять...
Alexander
Дорого
Dmitry
пусть сервер возвращает разбитыми
Вадим
https://github.com/facebook/react-native/issues/23570 Привет, ребята, кто то сталкивался с такой проблемой?
Dmitry
собсвенно, ты уже написал почему FlatList так не сможет
Stas
Можно ли эмулировать тач из js?
Stas
в android есть View.dispatchTouchEvent
Dmitry
https://github.com/facebook/react-native/issues/23570 Привет, ребята, кто то сталкивался с такой проблемой?
самое простое - залезь в node_modules и посмотреть что там такое
Денис
Как оптимизировать ( сделать ресайз или сжатие ) remote images перед тем как положить их в стор?
Alexander
это вы померили или просто так считаете?
Цикл по всем элементам, чтобы разбить + цикл для вставки. Звучит дорого
Dmitry
=)
Aleksei
ну, во-первых это запросто и за один проход сделать можно, а во-вторых лучше мерить чем гадать
Dmitry
это как например я делал замеры map foreach reduce while for и все они ведут дают разный результат, на разных объемах данных)
Stas
Всем привет. Кто-то знает как изменить стандартное поведение pagingEnabled у ScrollView или есть какой-то хитрый трюк как это можно сделать? На видео показано как хотелось бы их пинить по центру, чтобы всегда было видно соседей
Roman
Всем привет. Я пытаюсь подключится к сокету с помощью socket.io-client но получаю в консоль только SocketRocket: In debug mode. Allowing connection to any root cert. "socket.io-client": "2.0.4", "react-native": "0.58.3",
Stas
contentOffset
А на андройде?
Stas
До этого использовал эту библиотеку. Сейчас задача состоит в том, чтобы внизу карточки был скролящийся контент и карточка еще интерактивно становилась маленькой при скролле вниз и обратно большой при скролле вверх. Проблема в том, что скроллы у каждого компонента в этой карусели будут в разных позициях при скролле. Вот тут сейчас исппользуется этот снэп карусель
Stas
+ посмотри contentContainerStyle задай margin
Ну вот это первое видео с паддингом
Alexey
ну когда 1 елемент по всем осям скролится - чтото не так с дизайном :)
Alexey
еще и списком
Stas
ну когда 1 елемент по всем осям скролится - чтото не так с дизайном :)
🙂 Там скроллится должно не одновременно Это по сути скролл вью со скролл вью внутри
Alexey
а сбрасывать позицию скрола при свайпе ? что б всё выравнивалось
Alexey
ну как вариант ...
Stas
Stas
Что-то очень похожее
Stenz
Привет, ребята. Вопрос по react-native-maps. Можно ли как-то сделать маркер с кастомной анимацией на андройде? Из того, что я пока что нагуглил - пишут что нельзя, но, возможно, у кого-то тут получалось?
Igor
чистые функции - это те которые берут значение и возвращает значение базирующееся на взодящем значении?
Preeternal
Которые не изменяют передаваемый аргумент (аргументы)
Stas
Konstantin
Привет. Какие курсы по реакт нейтив посоветуете для веб разработчика? Реакт редакс знаю
Sasha
cs50 react native
Konstantin
Каво