Size: a a a

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

2021 January 15

M

Mark in React — русскоговорящее сообщество
Александр Бакиматов
а зачем кастомный хук на селектор?
чтобы не загромождать компонент, а просто вызвать хук, например: const data = useData()
источник

SM

Soltukiev Malik in React — русскоговорящее сообщество
лол
источник

АБ

Александр Бакиматов... in React — русскоговорящее сообщество
Mark
чтобы не загромождать компонент, а просто вызвать хук, например: const data = useData()
const data = useSelector(dataSelector) уже не православно?
источник

M

Mark in React — русскоговорящее сообщество
Александр Бакиматов
const data = useSelector(dataSelector) уже не православно?
тоже вариант, спасибо
источник

P

Procy in React — русскоговорящее сообщество
Всем привет, можете помочь - как обновлять компонент по изменению хэша? Визуально он обновляется, но данные нет.

Структура такая - есть основной компонент, в котором есть другой, который грузит список, допустим, новостей.
Все это обернуто в Layout, в котором есть Link to в котором передаются pathname и hash.

Задача - нужно обновить компонент по изменению хэша.

Как я сделал:
Ввел функцию hashDetect() в которой есть свитч который возвращает нужную строку (active, past). Данная строка необходима потом для загрузки объектов с нужным стейтом через экшен и репозиторий из БД рельсов.
Затем ввел константу hashState, которой присваиваю возвращаемого функцией hashDetect() значения
Затем идут стейты - стейт объектов (news, setNews).
Стейт стейта объекта (поле из БД) в котором значение по умолчанию используется константа hashState
Затем стейт для пагинации, для подзагрузки объектов по кнопке.
И еще стейт вкладки, который, по идее, должен меняться если переключается вкладка новостей из Layout` (active, past)

Затем функция для инкрементации страницы - в ней просто сеттер, который меняет значение стейта на +1. И он, кстати, спокойно работает и добавляет данные.

После идет функция изменения хэша hashChanged() в которой запускается функция hashDetect(), затем сеттер, который присваивает значение хэша объектам (`hashState) сеттер на вкладки и добавил еще консоль лог для того чтобы проверить, что хэш изменился.

Дальше вот вопрос, у меня стоит вот такое присваивание -
window.onhashchange = hashChanged; , где hashChanged- функция, которую описывал выше. То есть это такой лисенер.

Дальше уже идет хук useEffect в котором сеттер hashState и экшен, который возвращает промис, обрабатывает его и подгружает данные.

И вот инкрементация работает - данные приходят.
Если я просто хэш меняю в адресной строке - тоже обновляется. А вот просто по клику - не работает.
Нужен нормальный лисенер?
источник

M

Mark in React — русскоговорящее сообщество
Игорь Завирюха
Привет. Идет запрос, приходит ответ с картинкой, рендерится картинка. Как сделать так, чтобы блок, куда  она будет рендерится, еще до того, как картинка в нем будет знал о её высоте и страница не прыгала?
Если соотношение сторон всегда одинаково, то можно задать вертикальный пропорциональный падинг

https://css-tricks.com/aspect-ratio-boxes/
источник

SM

Soltukiev Malik in React — русскоговорящее сообщество
а нельзя просто дать размер картинке???
источник

EM

Elisey Martynov in React — русскоговорящее сообщество
Procy
Всем привет, можете помочь - как обновлять компонент по изменению хэша? Визуально он обновляется, но данные нет.

Структура такая - есть основной компонент, в котором есть другой, который грузит список, допустим, новостей.
Все это обернуто в Layout, в котором есть Link to в котором передаются pathname и hash.

Задача - нужно обновить компонент по изменению хэша.

Как я сделал:
Ввел функцию hashDetect() в которой есть свитч который возвращает нужную строку (active, past). Данная строка необходима потом для загрузки объектов с нужным стейтом через экшен и репозиторий из БД рельсов.
Затем ввел константу hashState, которой присваиваю возвращаемого функцией hashDetect() значения
Затем идут стейты - стейт объектов (news, setNews).
Стейт стейта объекта (поле из БД) в котором значение по умолчанию используется константа hashState
Затем стейт для пагинации, для подзагрузки объектов по кнопке.
И еще стейт вкладки, который, по идее, должен меняться если переключается вкладка новостей из Layout` (active, past)

Затем функция для инкрементации страницы - в ней просто сеттер, который меняет значение стейта на +1. И он, кстати, спокойно работает и добавляет данные.

После идет функция изменения хэша hashChanged() в которой запускается функция hashDetect(), затем сеттер, который присваивает значение хэша объектам (`hashState) сеттер на вкладки и добавил еще консоль лог для того чтобы проверить, что хэш изменился.

Дальше вот вопрос, у меня стоит вот такое присваивание -
window.onhashchange = hashChanged; , где hashChanged- функция, которую описывал выше. То есть это такой лисенер.

Дальше уже идет хук useEffect в котором сеттер hashState и экшен, который возвращает промис, обрабатывает его и подгружает данные.

И вот инкрементация работает - данные приходят.
Если я просто хэш меняю в адресной строке - тоже обновляется. А вот просто по клику - не работает.
Нужен нормальный лисенер?
мне кажется проще было бы если бы вы просто код скинули, чем его объяснение))
источник

w

wadxls in React — русскоговорящее сообщество
Игорь Завирюха
Привет. Идет запрос, приходит ответ с картинкой, рендерится картинка. Как сделать так, чтобы блок, куда  она будет рендерится, еще до того, как картинка в нем будет знал о её высоте и страница не прыгала?
Думаю, вам это не нужно, но если прям захотелось и эти картинки появляются по мере скролла или нажатия кнопки, то бэк может заранее выдавать размеры следующих элементов (соответственно они должны сохраняться в базу данных при загрузке на сервак)
источник

w

wadxls in React — русскоговорящее сообщество
Но обычно даже в масонри гридах юзают определенные стандарты, а изображения кропаются автоматом через background-size: cover.
источник

P

Procy in React — русскоговорящее сообщество
Elisey Martynov
мне кажется проще было бы если бы вы просто код скинули, чем его объяснение))
источник

И

Иван in React — русскоговорящее сообщество
дратути
источник

DS

Dmitriy Shuleshov in React — русскоговорящее сообщество
Иван
дратути
Действует пятничное разрешение на оффтоп?🌚😁
источник

И

Иван in React — русскоговорящее сообщество
Dmitriy Shuleshov
Действует пятничное разрешение на оффтоп?🌚😁
от темы зависит, я думаю
источник

DS

Dmitriy Shuleshov in React — русскоговорящее сообщество
Procy
Всем привет, можете помочь - как обновлять компонент по изменению хэша? Визуально он обновляется, но данные нет.

Структура такая - есть основной компонент, в котором есть другой, который грузит список, допустим, новостей.
Все это обернуто в Layout, в котором есть Link to в котором передаются pathname и hash.

Задача - нужно обновить компонент по изменению хэша.

Как я сделал:
Ввел функцию hashDetect() в которой есть свитч который возвращает нужную строку (active, past). Данная строка необходима потом для загрузки объектов с нужным стейтом через экшен и репозиторий из БД рельсов.
Затем ввел константу hashState, которой присваиваю возвращаемого функцией hashDetect() значения
Затем идут стейты - стейт объектов (news, setNews).
Стейт стейта объекта (поле из БД) в котором значение по умолчанию используется константа hashState
Затем стейт для пагинации, для подзагрузки объектов по кнопке.
И еще стейт вкладки, который, по идее, должен меняться если переключается вкладка новостей из Layout` (active, past)

Затем функция для инкрементации страницы - в ней просто сеттер, который меняет значение стейта на +1. И он, кстати, спокойно работает и добавляет данные.

После идет функция изменения хэша hashChanged() в которой запускается функция hashDetect(), затем сеттер, который присваивает значение хэша объектам (`hashState) сеттер на вкладки и добавил еще консоль лог для того чтобы проверить, что хэш изменился.

Дальше вот вопрос, у меня стоит вот такое присваивание -
window.onhashchange = hashChanged; , где hashChanged- функция, которую описывал выше. То есть это такой лисенер.

Дальше уже идет хук useEffect в котором сеттер hashState и экшен, который возвращает промис, обрабатывает его и подгружает данные.

И вот инкрементация работает - данные приходят.
Если я просто хэш меняю в адресной строке - тоже обновляется. А вот просто по клику - не работает.
Нужен нормальный лисенер?
Капец ты не ленивый
источник

DS

Dmitriy Shuleshov in React — русскоговорящее сообщество
Procy
Всем привет, можете помочь - как обновлять компонент по изменению хэша? Визуально он обновляется, но данные нет.

Структура такая - есть основной компонент, в котором есть другой, который грузит список, допустим, новостей.
Все это обернуто в Layout, в котором есть Link to в котором передаются pathname и hash.

Задача - нужно обновить компонент по изменению хэша.

Как я сделал:
Ввел функцию hashDetect() в которой есть свитч который возвращает нужную строку (active, past). Данная строка необходима потом для загрузки объектов с нужным стейтом через экшен и репозиторий из БД рельсов.
Затем ввел константу hashState, которой присваиваю возвращаемого функцией hashDetect() значения
Затем идут стейты - стейт объектов (news, setNews).
Стейт стейта объекта (поле из БД) в котором значение по умолчанию используется константа hashState
Затем стейт для пагинации, для подзагрузки объектов по кнопке.
И еще стейт вкладки, который, по идее, должен меняться если переключается вкладка новостей из Layout` (active, past)

Затем функция для инкрементации страницы - в ней просто сеттер, который меняет значение стейта на +1. И он, кстати, спокойно работает и добавляет данные.

После идет функция изменения хэша hashChanged() в которой запускается функция hashDetect(), затем сеттер, который присваивает значение хэша объектам (`hashState) сеттер на вкладки и добавил еще консоль лог для того чтобы проверить, что хэш изменился.

Дальше вот вопрос, у меня стоит вот такое присваивание -
window.onhashchange = hashChanged; , где hashChanged- функция, которую описывал выше. То есть это такой лисенер.

Дальше уже идет хук useEffect в котором сеттер hashState и экшен, который возвращает промис, обрабатывает его и подгружает данные.

И вот инкрементация работает - данные приходят.
Если я просто хэш меняю в адресной строке - тоже обновляется. А вот просто по клику - не работает.
Нужен нормальный лисенер?
Просто по клику куда?
источник

P

Procy in React — русскоговорящее сообщество
Я делал простую кнопку в самом компоненте, и онклик в рендере - с ним все работает
источник

P

Procy in React — русскоговорящее сообщество
А надо, чтобы работало по клику с лэйаут компонента :/
источник

EM

Elisey Martynov in React — русскоговорящее сообщество
if ("onhashcnahge" in window) {
   console.log('Hash was changed')
}

Вот здесь например опечаточку нашел пока
источник

EM

Elisey Martynov in React — русскоговорящее сообщество
Procy
Я делал простую кнопку в самом компоненте, и онклик в рендере - с ним все работает
Так стоп. А layout компонент ты можешь скинуть?
источник