Size: a a a

React — русскоговорящее сообщество

2020 July 01

Arthur К in React — русскоговорящее сообщество
Nikita E
в твоем примере нееет ни ремаунта ни апдейта лишнего, все рендерится по 1 разу
Ок, понял. Спасибо, большое
источник

NE

Nikita E in React — русскоговорящее сообщество
Igor Shmukler
добрый день,

я пытаюсь добавить что-то похожее на infinite scroll к списку элементов с pagination. надо чтобы дойдя до последнего элемента, оно перешло на следующую "страницу".
<div className={cn("w-col w-col-4", styles.info_container)} >
                   <div className={styles.property_container} onScroll={()=> {
                     console.log('scrolling!');
                     }}>
                     {pagedListings.map((property) => (
                       <Property
                         key={property.id}
                         id={property.id}
                         price={property.original_price}
                         imgUrl={property.medium_photo_url}
                         address={property.address}
                         permalink={property.permalink}
                         bedRooms={property.total_bedrooms}
                         bathRooms={property.total_full_baths}
                         acre={property.acre}
                         handleClick={handleClick}
                       />
                     ))}
                     {!pagedListings.length && (
                       <h2 className={styles.no_result}>No Result</h2>
                     )}
                   </div>
                   <ReactPaginate
                     previousLabel={previousSVG}
                     nextLabel={nextSVG}
                     breakLabel="..."
                     breakClassName="break-me"
                     pageCount={pageCount}
                     marginPagesDisplayed={1}
                     pageRangeDisplayed={4}
                     containerClassName="pagination"
                     subContainerClassName="pages pagination"
                     activeClassName="active"
                     initialPage={0}
                     onPageChange={handlePageClick}
                   />
                 </div>


подключил console.log() к onScroll. дальше не понятно что делать. мне нужны refs и react-dom или можно что-то поумнее придумать?
(Сорри, код сложно в сообщении читать с телефона)

Я бы сделал так:
Повесил бы ref на лист контейнер

На скролл бы бы повесил коллбек с троттлом на animationframe а лучше миллисекунд на 200

Внутри коллбека брал бы boundingClientRect у последнего элемента, который ты можешь найти в контейнере.

Дальше на основе данных смотрел бы грузить или нет
источник

IS

Igor Shmukler in React — русскоговорящее сообщество
Nikita E
(Сорри, код сложно в сообщении читать с телефона)

Я бы сделал так:
Повесил бы ref на лист контейнер

На скролл бы бы повесил коллбек с троттлом на animationframe а лучше миллисекунд на 200

Внутри коллбека брал бы boundingClientRect у последнего элемента, который ты можешь найти в контейнере.

Дальше на основе данных смотрел бы грузить или нет
спасибо.
источник

NE

Nikita E in React — русскоговорящее сообщество
Igor Shmukler
добрый день,

я пытаюсь добавить что-то похожее на infinite scroll к списку элементов с pagination. надо чтобы дойдя до последнего элемента, оно перешло на следующую "страницу".
<div className={cn("w-col w-col-4", styles.info_container)} >
                   <div className={styles.property_container} onScroll={()=> {
                     console.log('scrolling!');
                     }}>
                     {pagedListings.map((property) => (
                       <Property
                         key={property.id}
                         id={property.id}
                         price={property.original_price}
                         imgUrl={property.medium_photo_url}
                         address={property.address}
                         permalink={property.permalink}
                         bedRooms={property.total_bedrooms}
                         bathRooms={property.total_full_baths}
                         acre={property.acre}
                         handleClick={handleClick}
                       />
                     ))}
                     {!pagedListings.length && (
                       <h2 className={styles.no_result}>No Result</h2>
                     )}
                   </div>
                   <ReactPaginate
                     previousLabel={previousSVG}
                     nextLabel={nextSVG}
                     breakLabel="..."
                     breakClassName="break-me"
                     pageCount={pageCount}
                     marginPagesDisplayed={1}
                     pageRangeDisplayed={4}
                     containerClassName="pagination"
                     subContainerClassName="pages pagination"
                     activeClassName="active"
                     initialPage={0}
                     onPageChange={handlePageClick}
                   />
                 </div>


подключил console.log() к onScroll. дальше не понятно что делать. мне нужны refs и react-dom или можно что-то поумнее придумать?
Делается просто и умно если использовать rxjs) впринципе без него тоже не очень геморно
Если ожидается, что лист очень большой будет то лучше посмотреть на virtual table/list компонент какой нить опенсорсный, там конечно со всем этим будет посложнее

Если хочется обойтись без reflow от geboundingclientrect, то можно записывать на обновление листа положение последнего элемента и без троттла (но лучше все же с троттлом) обновлять его используя ивент скролла (там всякие дельты должны быть) (только вне стейта компонента обновлять, пожалуйста) и производить дальнейшие действия уже с готовым значением.
источник

DS

Dmitriy Shuleshov in React — русскоговорящее сообщество
Иван
всё, иди понимать монады
опа, дедОвская шутейка)
источник

NE

Nikita E in React — русскоговорящее сообщество
Кстати пока писал про virtual list, он случайно накрылся у сообщений в телеге в этом самом канале)
источник

NE

Nikita E in React — русскоговорящее сообщество
!needAuth || isAuth ? children : NeedAuth?
источник

NE

Nikita E in React — русскоговорящее сообщество
Не чёт плохо тоже)
источник

NE

Nikita E in React — русскоговорящее сообщество
Nikita E
!needAuth || isAuth ? children : NeedAuth?
Во так вроде норм)
источник

ВШ

Вениамин Шитиков... in React — русскоговорящее сообщество
Привет всем! Может кто знает по анимациям svg. Дизайнер дал 2 svg файла (from, to) и json перехода. Моих познаний в анимациях точно не хватает.
источник

М

Мишаня in React — русскоговорящее сообщество
Вениамин Шитиков
Привет всем! Может кто знает по анимациям svg. Дизайнер дал 2 svg файла (from, to) и json перехода. Моих познаний в анимациях точно не хватает.
источник

О

Олег in React — русскоговорящее сообщество
Ребят, сделал ref на react компоненте модалки но почему-то пишет что он Null. никто не знает почему?
источник

DS

Dmitriy Shuleshov in React — русскоговорящее сообщество
Олег
Ребят, сделал ref на react компоненте модалки но почему-то пишет что он Null. никто не знает почему?
потому что в какой то начальный момент он null , в тот момент как реакт уже создал коробочку для рефа, а нода еще не была создана.
источник

О

Олег in React — русскоговорящее сообщество
Dmitriy Shuleshov
потому что в какой то начальный момент он null , в тот момент как реакт уже создал коробочку для рефа, а нода еще не была создана.
хм. понял
источник

DT

Daniil Tchernyavsky in React — русскоговорящее сообщество
Лучше в юзэффекте обрабатывай
источник

М

Мишаня in React — русскоговорящее сообщество
Олег
Ребят, сделал ref на react компоненте модалки но почему-то пишет что он Null. никто не знает почему?
Тернарником проверь если там что то, если есть отрисуй нет тогда null
источник

DS

Dmitriy Shuleshov in React — русскоговорящее сообщество
Мишаня
Тернарником проверь если там что то, если есть отрисуй нет тогда null
Когда познал силу тернарника)
источник

О

Олег in React — русскоговорящее сообщество
Мишаня
Тернарником проверь если там что то, если есть отрисуй нет тогда null
работает. спс
источник

О

Олег in React — русскоговорящее сообщество
закинул в componentdidmount
источник

ВШ

Вениамин Шитиков... in React — русскоговорящее сообщество
Спасибо, читал. Но не совсем понял как использовать в моем случае.
источник