🦜
ну типо, вы ща приводите вещи, от которых отказываются еще на формировании UI
Danila
Нет, просто выводят в таблицу и у всёх всё ок же
Danila
Отказываться надо только если придумать требование открывать это на мобиле А оно никому в голову не приходит
Igor
20 колонок чот перебор. Такие штуки обсуждаются на этапе формата данных
Тети-бухгалтеры бывают и такие, нужно как-то подстроиться
Igor
Например, хорошая практика отобразить/не отобразить какой-то грид
🦜
Отказываться надо только если придумать требование открывать это на мобиле А оно никому в голову не приходит
Если ты говоришь, что 20 колонок. Ок, обсуждаем UI, формат данных. Находим решение разделить на 4 таблицы по 5 колонок, потому что в 20 колонок отображается несвязанная информация.
🦜
кароче нужно смотреть на данные и уже после проектировать ui. Я так подхожу к работе
Igor
Но изначально сделай 3-4 грида, сколько поместится. Нужно больше - сделай ты модалку, да что угодно, где ты выберешь, что тебе отобразить
🦜
Ну норм же, да
Здесь необычный ui и нет указателя на то, что блоки draggble и есть swipe
Anonymous
Есть такой сценарий: получаю уведомление>кликаю на него>перехожу в компонент>в cDM есть хэндлер navigator.serviceWorker.onMessage, но он не срабатывает, т.к сообщение получено фоновым путем. Как компонент может обработать фоновое уведомление?
Aлексей
Я думал что то универсальное, что бы каждый раз подставляло типо такого: 'Content-Type': 'application/json', 'Authorization': JWTHeader()
Делаешь в отдельном файле функцию которая будет возвращать axios create со всеми нужными параметрами
🦜
https://cdn.dribbble.com/users/1038568/screenshots/4000477/test_02_02.gif Вот это в принципе и списком можно реализовать с хедером
🦜
Тоже списком с хедером
🦜
Еще раз. Главное данные, потом ui
Юрий
Делаешь в отдельном файле функцию которая будет возвращать axios create со всеми нужными параметрами
а интерсепшн? с помощью его ведь можно подставлять хедер и проверять ответ, обновлять токен и тд?
Ingwarrr
народ привет, опять тут нуб с нубскими вопросами) Как внутри компонента повесить evenlistener на элемент дом, который рендерится не реактом и по клику вызвать dispatch() стейтом управляю с помощью useReducer
Ingwarrr
ну у меня алерт с рефом на ноду работает внутри юзэффекта, а вот диспатч не отрабатывает
Aлексей
а интерсепшн? с помощью его ведь можно подставлять хедер и проверять ответ, обновлять токен и тд?
Интерсепт нужен после того, как пришёл ответ от сервера. Хеадеры авторизации нужно вставить до этого
Alexander
Есть какие-то библиотеки виртуализации, которым пофиг, как расположены элементы? А то во всех нужно указывать колонки, строки, высоту...
Sergey
логически подумай
Sergey
как иначе знать размер всех элементов?
Юрий
Интерсепт нужен после того, как пришёл ответ от сервера. Хеадеры авторизации нужно вставить до этого
ты имеешь ввиду создать функцию, которая будет ренерировать хедеры, а потом передавать ее в axios?
Alexander
как иначе знать размер всех элементов?
Можно же внутри получать высоту элемента и определять, виден он или нет. Колонки строки пофиг. Высота покоя не дает
Sergey
ты вообще знаешь как работает виртуальный рендеринг?
Sergey
то что там элементы НЕ РЕНДЕРЯТСЯ
Sergey
и для них не создается DOM элемента, а значит узнать размер невозможно
Sergey
рендерится только то, что видно сейчас на экране
Vladimir
ух как меня бесит виртуализация тем, что в ней браузерный поиск не работает
Sergey
ух как меня бесит виртуализация тем, что в ней браузерный поиск не работает
вроде бы есть способ его хендлить искать самостоятельно по данным и скроллить к нужному месту
Sergey
хотя конечно проще сделать как гитхаб сделал (уже нет (((
Vladimir
хотя конечно проще сделать как гитхаб сделал (уже нет (((
битбакет мб? Там Ctrl+F перехватывается самодельным поисковым окошком
Aлексей
Потом юзаешь ее: api().get('your_api_point')
Sergey
а лучше что-то вроде const request = (method, url, body, query) => fetch(... // --- const getUsers = ({ limit }) => request("GET", "/users", null, { limit })
Юрий
и это передавать в запрос 3им параметров? то есть настройки? думаешь не стоит делать типо такого: axios.interceptors.request.use(function (config) { const token = store.getState().session.token; config.headers.Authorization = token; return config; });
Юрий
или в доках есть такой вариант axios.defaults.headers.common['Authorization'] = store.getState().session.token;
Sergey
а лучше что-то вроде const request = (method, url, body, query) => fetch(... // --- const getUsers = ({ limit }) => request("GET", "/users", null, { limit })
и юзаешь её без знания о том, что там, GET/POST, как аргументы отправляются и т.д. такое намного легче поддерживать и тестирвать
Nikita
+
Sergey
Ну вот что ты начинаешь)
fetch или axios пофигу главное делать слой сверху
Aлексей
и что
Человек про axios спрашивал
Sergey
может быть и так, если нравится городить axios const getUsers = ({ limit }) => axios.get("/users", null, { limit })
Sergey
главное отделять методы запроса от логики
Юрий
просто, если токена например нету или он протух что тогда? если нету то подставит в запросе null ? вернется ошибка и потом уже другой интерсепшен будет обрабатывать?
Aлексей
может быть и так, если нравится городить axios const getUsers = ({ limit }) => axios.get("/users", null, { limit })
При таком подходе нужно на каждый запрос заголовки авторизации передавать
Юрий
Если токен протух, мне бек возвращает 403 и я ридирект на логин делаю
а если есть рефреш токен, можно ведь его обновить попробовать
Tor
Можно ещё делать рефреш токена, если токен протух, и пробовать сделать повторный запрос с новым токеном
Юрий
без перебрасываний на логин
Sergey
господи
Sergey
вы че абстракциями пользоваться не можете?
Sergey
реально?
Юрий
то есть будет нормально, если я создам отдельную функция которая будет возвращать хедер с токеном и передавать 3им параметром? не нужно какой то интерспершн что бы не подставлять, а это было и так при каждом запросе?
Sergey
const request = (url, body, query) => { // here your logic with tokens return AXIOS or FETCH } const getUsers = ({ limit }) => request("/users", null, { limit })
Sergey
лучше сделай отдельную функцию, которая будет независима от урла, и прочего, и будет внутри себя делать запрос и подставлять токены и прочее
Юрий
Eugene
с axios очень нравится описывать запросы 🤔
Sergey
ты имеешь ввиду отдельные функциии POST, GET (которые принимают url, body, а хедер у них один и тот же)
request("POST", "/url", body, query) вот такое (body и query можно заменить на что угодно)
Sergey
getState() 😱
в библиотечном коде можно
Sergey
ну тем, что нет слоя отделяющего всё приложение от реализации бекенда