@react_js

Страница 2448 из 5115
Anatoly
30.10.2017
07:44:51
Саги очень удобно с этим справляются, как мне кажется

Oleg
30.10.2017
07:46:09
отдельный вопрос - размышление: есть запрос к апихе, ответ зависит от параметра (например автокомплит), и этот запрос вызывают несколько компонентов в разных частях приложения, с разными параметрами. Как лучше отдельно для каждого запроса рассчитывать состояние, тот же isFetching? Только созданием нескольких редьюсеров?

Dmitry
30.10.2017
07:46:41
На мой взгляд axios это более лучший выбор чем fetch. Очень гибкий, простой в настройке под любые извращенные запросы. Для меня лично очень удобно оказалось возможность нескольких конфигураций для разных API, возможность интерсептить запросы итд

Google
Oleg
30.10.2017
07:47:06
Объекту запроса делать в сторе точно нечего, как такая мысль в голову могла прийти
различные middleware пропускают через себя и url, и параметры, плюс у нас может появится cancelToken, я это имел в виду

Dmitry
30.10.2017
07:48:15
Преимуществ очень много, на самом деле. Если простое приложение, с простым API на бэкенде достаточно fetch использовать и вобще не париться, но лично я всегда его использую(axios)

kana
30.10.2017
07:48:41
Это все еще не должно быть в сторе. Стор - не объект с временной информацией, это состояние приложения, которое потенциально можно скопировать на другой клиент и получить ту же картину. Скопировав объект запроса или токен, ты ничего не получишь

Alexey
30.10.2017
07:49:44
Я думаю, тут граница может быть размыта, на самом деле...

Anatoly
30.10.2017
07:50:27
О, вот Женя может грамотно рассказать

Evjeni
30.10.2017
07:52:37
Господа, есть такой вот mapStateToProps, где лучше всего вычислять countOfGuests и countOfCoupled? const mapStateToProps = (state) => { const { guestList } = state return { guests: guestList.guests, countOfGuests: guestList.guests.length, countOfCoupled: guestList.guests.filter((item) => item.coupled === true).length } }

kana
30.10.2017
07:52:42
писать свои фабрики редьюсеров, которые генерят за тебя такие редьюсеры и экшоны, никто не мешает, готовых решений полно

Evgeny
30.10.2017
07:53:58
О, вот Женя может грамотно рассказать
Я как раз пост написал только что

Про редакс

Google
Evgeny
30.10.2017
07:54:11
https://medium.com/@evgeny.rodionov/6a95feefcf29

Oleg
30.10.2017
07:59:01
хелперы хелперами, но обработка статусов различных запросов меня беспокоит, потому что выглядит вот-так:



Evgeny
30.10.2017
07:59:17
Эээ

Oleg
30.10.2017
07:59:30
и огромная обработка каждого case



Evgeny
30.10.2017
08:00:22
В редьюсере нужно хранить _ДАННЫЕ_

А не промежуточные состояния их

Oleg
30.10.2017
08:00:28
это пример к обработке запросов условного api/orders/:feature

Anatoly
30.10.2017
08:01:00
Выглядит неправильно

Oleg
30.10.2017
08:01:02
В редьюсере нужно хранить _ДАННЫЕ_
то есть, считать состоянием предзагрузочным все то, когда нет данных, и оставлять это на усмотрение компонента?

Viktor
30.10.2017
08:01:07
https://medium.com/@evgeny.rodionov/6a95feefcf29
А что плохого тот же modalOpen в сторе хранить? Так я могу контролировать, что у меня не будет 2 модалки одновременно на экране

Evgeny
30.10.2017
08:01:19


Если ты знаешь зачем ты что-то делаешь, базару ноль

Anatoly
30.10.2017
08:02:50
По ощущениям ты пытаешься хранить состояние запросов вместо состояния приложения, фетчинг и эррор - результаты запросов, а все остальное просто разные экшены меняющие эти два поля

Evgeny
30.10.2017
08:02:58
+

Oleg
30.10.2017
08:03:37
а как же http://redux.js.org/docs/advanced/AsyncActions.html#async-actions , стандартная обработка асинхронных действий

Google
Alexey
30.10.2017
08:05:07
https://medium.com/@evgeny.rodionov/6a95feefcf29
Ну про connect вообще логично. Он же для этого и создан. Момент с чистым dispatch интересный. Момент с complexes и разбивкой на модули не сильно понятен. Кажется, что это лишь дело вкуса. UI state в store иногда сильно упрощает взаимодействие между разными компонентами React. Особенно в случае расположения в разных ветвях дерева, как раз избавляя от прокидывания свойств. Для меня правило такое: 1. Если ui-state влияет на другие компоненты, не являющиеся 1 уровня предком/потомком - то в store

Anatoly
30.10.2017
08:05:10
Ну так изФетчинг это у тебя состояние приложения, но это не значит что у тебя на каждый запрос своё состояние должно быть)

Viktor
30.10.2017
08:06:40
Вопрос, есть у вас компонент-функция и тут вы осознаете что нужно добавить state или что-то из lifecycle- будете переписывать на класс или враппер делать?

Oleg
30.10.2017
08:06:49
Ну так изФетчинг это у тебя состояние приложения, но это не значит что у тебя на каждый запрос своё состояние должно быть)
в таком случае я могу использовать isFetching что бы не отправлять одновременно другой запрос, но не смогу на основе этого состояния показывать прелоадер

хотя, выглядит логичным показывать прелоадер по умолчанию в соответствующем компоненте, и убирать его, как только появятся данные

Александр
30.10.2017
08:09:25
враппер , ты имеешь ввиду HOC?
если будешь реиспользовать, то есть смысл делать декоратор, если нет. То перепсать класс, поидее так.

Alexey
30.10.2017
08:12:53
Без обид. На мой взгляд программирование - это хорошая вещь, чтобы быстро и эффективно эксперементировать. Это позволяет находить оптимальные конфигурации каждого конкретного случая. В особенности, если мы не говорим о фреймворках, а скорее о парадигмах (в плане React)

Ну так изФетчинг это у тебя состояние приложения, но это не значит что у тебя на каждый запрос своё состояние должно быть)
На каждый логический запрос (который может быть блоком из нескольких физических, например). В случае если приложение предполагает возможные параллельные независимые запросы

Anatoly
30.10.2017
08:20:49
В некоторых фреймворках лоадинг - это число говорящее о количестве идущих запросов, если у тебя троттлер один на все приложение - удобно

Group Butler
30.10.2017
08:21:26
Evgeny, this type of media is not allowed in this chat. (1/3)

Vladimir
30.10.2017
08:21:34
Лол

Evgeny
30.10.2017
08:21:44
Огонь

Alexey
30.10.2017
08:22:27
В некоторых фреймворках лоадинг - это число говорящее о количестве идущих запросов, если у тебя троттлер один на все приложение - удобно
Результат отдельных запросов может влиять на вывод различных компонент. Соответственно, выводить из лучше сразу, а не блокировать пользователя до завершения всех. Это правильно с точки зрения UI (обычно)

Огонь
Неужели распознавание голоса все ещё плохо работает?

Evgeny
30.10.2017
08:24:07
Моя речь полна терминов и англицизмов

Oleg
30.10.2017
08:27:02
как раз так я и делаю, в статье подробнее описано, ближе к концу блок про апи - https://habrahabr.ru/post/341132/

Google
Evgeny
30.10.2017
08:27:34
Фу хабр

Oleg
30.10.2017
08:27:39
на typescript кучу экшенов плодить не люблю, так как добавляется лишняя строка

Александр
30.10.2017
08:36:28
Всем привет! Ай нид хелп. Делаем проект в связке Django Rest Framework - React,Redux,Router. Доступ к api осуществляется с помощью axios. Авторизация осущевляется с помощью токена. Столкнулись с проблемой неправильного кэширования данных, а именно, когда мы логинимся под пользователем и получаем данные по полученному токену все хорошо, но когда делаем logout, и заходим под другим пользователем приходят данные предыдущего пользователя, самое интересное, что каким то образом все кэшируется в браузере, какие только заголовки на отключения кэширования не пробовали, и система работает только при отключенном кэше в браузере. Может кто сталкивался?

Александр
30.10.2017
08:37:32
Это че за штука?

redux-persist?

Александр
30.10.2017
08:37:57
кэшируется сам запрос

причем именно на стороне клиента

Ilya
30.10.2017
08:38:20
кэшируется сам запрос
ну откуда данные в него идут? Из формы?

Alex
30.10.2017
08:38:33
можно сделать отдельную ветку в сторе с массивом pending, если массив пустой никаких операций не происходит, если в нём что-то есть, соотвественно, что-то происходит, если добавить какую-то мету можно будет создавать progress / loading ui элементы с фильтрами, естественно это уже не state данные. + как вариант можно написать свой класс, к нему мидлвэр в стор, и селектор через реселект, тогда редакс не юзается

Oleg
30.10.2017
08:38:50
кэшируется сам запрос
может все-таки он не кэшируется, а из-за кук приходит ответ аналогично предыдущему?

Alex
30.10.2017
08:39:12
в идеале это должен быть локальный стейт, но доставить информацию в несколько лоадеров/прогресс баров как-то сложно без connect и redux

Александр
30.10.2017
08:40:44
может все-таки он не кэшируется, а из-за кук приходит ответ аналогично предыдущему?
в том то и дело, что куки никак не учавствуют в доступе к апи

может все-таки он не кэшируется, а из-за кук приходит ответ аналогично предыдущему?
Браузер типо говорит, есть кэшированная версия запроса и отдает её

Vladimir
30.10.2017
08:41:49
скинь заголовки запроса

и ответа

Google
Александр
30.10.2017
08:42:06
gravizappa
30.10.2017
08:49:56
ребят, а можете подсказать, почему себя webpack dev server так ведет: если открываешь просто хост без пути, то отдает html c инклюдами с / в начале. а если открываешь хост с каким либо путем типа /foo/bar/, то / в инклюдах магически пропадает и путь получается относительным и соответственно нихрена не подгружается. historyApiFallback стоит, publicPath тоже. где я что промудил?

Edward
30.10.2017
08:53:37
скинь заголовки запроса
Request Method:GET Status Code:200 OK (from disk cache) Remote Address:54.246.117.63:443 Referrer Policy:no-referrer-when-downgrade Response Headers Access-Control-Allow-Origin:* Allow:GET, PUT, HEAD, OPTIONS Cache-Control:max-age=600 Content-Language:ru Content-Length:243 Content-Type:application/json Date:Mon, 30 Oct 2017 08:50:12 GMT Expires:Mon, 30 Oct 2017 09:00:12 GMT Server:gunicorn/19.4.5 Vary:Accept, Accept-Language, Cookie Via:1.1 vegur X-Frame-Options:SAMEORIGIN Request Headers Provisional headers are shown Accept:application/json, text/plain, */* Origin:http://localhost:3000 Referer:http://localhost:3000/ User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36

вторая строчка

ответ берется из кэша

Vladimir
30.10.2017
08:54:34
токен выпили

из сообщения

Edward
30.10.2017
08:54:56
?

Vladimir
30.10.2017
08:55:12
max-age=600

Edward
30.10.2017
08:55:56
предлагаешь убрать?

Vladimir
30.10.2017
08:56:06
да

Ilya
30.10.2017
08:56:11
no-cache пробовал?

Edward
30.10.2017
08:58:22
пробовал, прописывал его в запросе в axios'е, корс вроде ругался

Vladimir
30.10.2017
08:58:38
это сервер

сервер отправляет cache-control

И поэтому у тебя из кэша достается этот ответ

Александр
30.10.2017
08:59:30
это сервер
А вот это уже интересно

Страница 2448 из 5115