1. horizontal={false} лишнее, оно по умолчанию так 2. у тебя нет keyExtractor в flatlist или key в айтеме, это неверно для рендера 3. id категории и id категории у карточки разные переменные, всё ок. но вообще делать так, как у вас — очень странно
Спасибо! horizontal={false} сделал, т.к. в доке написано, что не будет работать 2 колонки без него..Но не проверял)) А про кей прочёл, что если в данных есть поеле id, то FlatList его автоматически возьмет как кей.. Может я что-то не так понял.. А как можно сделать, чтобы было получше?
дефолт === фальш. вы правы, в доке написано, что numColumns работает только при default={false}, но он по дефолту такой
про id из айтема для flatlist не уверен, но по-моему он берёт его именно из key. могу ошибаться.
смотри, ты рендершить айтем только если catId == item.category. во-первых, забывай про сравнение без приведение типов, тебе нужно не два равенства, а три (нужно больше равенств!!!), т.е. catId === item.category. однако, скорее всего catId у тебя строка из параметра, поэтому стоит сделать что-то типа parseInt(catid) === item.category`или `catId*1 === item.category. потом, ты рендеришь элемент только в том случае, если у тебя выполняется первое условие. а что, если нет? в методе renderItem ты вполне можешь сделать обычную проверку через if, чтобы либо отобразить "нет такого элемента" или отобразить элемент, или ошибку. ну и из категории "разрешите доебаться", <ListItem title={item.title} id={item.id} cookTime={item.cookTime} image={item.image} /> можно записать как <ListItem {...item} />
спасибо )
Спасибо! По поводу === уже сделал) Сам увидел) Но у меня там оба ид-числа) Но да, все верно, нужно и тип сравнивать! Сейчас остальное буду внедрять)
можно записать как <ListItem {...item} /> Кстати, так не пишу специально для будущей читабельности кода)
Наверное я не правильно записал.. Но он рендерит теперь не правильно..Видимо это флетЛист так делает..
покажи код, где flatitems, но если коротко, то "да" на твой вопрос )
Не понял, какой код?
да и фильтровать в renderItem такое себе) его наоборот мемоизировать над
недоглядел, всё ок, кроме проверки. давай так, если catIf !== item.category, консоль item
чтобы item не перерендеривался на каждый чих. но это не всегда требуется, только если там что-то сложное отрисовывается, что на перфомансе сказывается
и фильтрацию вынести из рендера и тож ее в usememo. Но да, это не всегда стоит того) я вцелом подсказал
ну кстати про фильтры там вроде и не написано, только про условия ( item | null )
о том и речь, он не нужен в мемо чаще всего. а даже и тогда, когда его можно в мемо, на это можно забить.
ну у него не правильно фильтр и реализован. Много раз no items и даже если бы другое отображение было. не круто его там применять)
это да) реакт и так норм справляется часто
а, если про код коммент - да, в данном случае там лучше просто отфильтровать data до того как передавать в flatlist
Думаю, это хорошая идея. Вчера думал об этом тоже. Спасибо!
что мешает передать в дату flatlist фильтр?
да, это уже деталь реализации, главное чтобы данные были отфильтрованы до рендера, а не в самом renderItem проверки были на это
я часто встречаю, что люди передают в дату флетлиста ссылку на сторы, редукс или подобные, а те каждый чих коммитят, это ад )
Обсуждают сегодня