@react_js

Страница 3567 из 5115
Kelin
02.04.2018
21:34:11
все еще не вижу весомой причины существования запросов в редаксе

Stepan
02.04.2018
21:34:24
Щас бы в редакс класть боясь варнингов

Kelin
02.04.2018
21:35:00
во вью-то понятно, там "а-похуй-нахуй", но тут-то уже должны были че-то поумнее запилить

Stepan
02.04.2018
21:35:01
Google
Andrey
02.04.2018
21:35:21
Тестируемо, платформонезависимо
Ха. Пойду редакс на ангуляр перенесу.

Kelin
02.04.2018
21:35:30
пора обертки апикейса к реакту писать ?

Andrey
02.04.2018
21:35:49
Kelin
02.04.2018
21:36:02
в смысле?

Andrey
02.04.2018
21:36:31
в смысле?
Генерируй библиотеки.

Kelin
02.04.2018
21:36:53
это пока высший пилотаж, падажжи немного

Kelin
02.04.2018
21:38:54
ну прости, у меня не 10 рук, чтобы все сразу мейнтейнить ?

Andrey
02.04.2018
21:39:41
Слабак.

Kelin
02.04.2018
21:40:21


Vladislav
03.04.2018
03:47:54
ребят а вот интересно кто саги уже долго готовит - как вы их запускаете 1) посылаете экшн в стор, который слушается сагой 2) вывзаете runSaga у мидлваря?

Artyom
03.04.2018
03:59:59
уже не первый раз слышу о ней, хочу понять почему saga а не asyc/await)
Сага, можно сказать, старше asyn await. + Она более менее enterprise уровня и помогает задавать архитектуру приложения

Google
Artyom
03.04.2018
04:03:36
Alexey
03.04.2018
04:56:13
сколько почасовка у реакт мидлов в среднем?

Nikita
03.04.2018
04:57:09
15-20?

Сергей
03.04.2018
05:12:43
Если разбивать проект на features, то как хранить <Route>-компоненты? Отдельно для каждой feature или в общем компоненте?

Viktor
03.04.2018
05:24:55
Я сделал в общем

Alexey
03.04.2018
05:40:16
15-20?
в россии? или на апворке

Nikita
03.04.2018
05:40:34
в россии? или на апворке
В России считают почасовой рейт?

Alexey
03.04.2018
05:40:50
во фрилансе иногда да

Ҫѐҏӗѫӑ
03.04.2018
05:52:33
@javascript_jobs

http://kcsrk.info/ocaml/multicore/2015/05/20/effects-multicore/ нашел тут про происхождение слова fiber в реакте кажется

Илья
03.04.2018
05:58:49
что данные должны загружаться либо по роутам из саг либо по инициативе юзера из интерфейса
я так понял ты юзаешь саги постоянно? Вот вопрос, есть SSR. ко мне пришли на сервер по ulr /posts, как с сагами получить эти посты, а после получения уже отрисовать приложение? Я просто чет вообще не вдупляю. Сегодня будет мой второй день с сагами))

Ҫѐҏӗѫӑ
03.04.2018
05:59:24
в новых контекстах есть способ скипнуть консюмеров с помощью битовой маски https://github.com/facebook/react/blob/4ccf58a94dce323718540b8185a32070ded6094b/packages/react-reconciler/src/__tests__/ReactNewContext-test.internal.js#L498-L526

Sergey
03.04.2018
06:23:35
Подскажите можно ли как то завставить компонент Redirect из react-router v4 работать с перезагрузкой страницы, а не пушить в url адрес? У меня есть некоторые роуты, которые должны быть доступны только для подписанных юзеров. Для этих целей у меня есть простой декоратор. Сейчас он редиректит на корень сайте, а мне надо редиректить на страницу авторизации, которая находится на другом домене



Илья
03.04.2018
06:27:01
берешь react router v4 используешь <StaticRouter там где ранее был <BrowserRouter|ConnectedRouter
при чем тут роутрер то если я про саги спрашиваю)). Как отрендерить компонент на сервере я знаю. Но перед рендором мне нужно сходить в апи и получить все данные для текущего роута. С сагами (по туторимлам) мы просто диспатчим обычный экшен, дальше сага подписанная на этот экшен лезет в апи. Дак вот вопрос - как узнать, что данныые уже пришли и положилиись в стор?

Valeriy
03.04.2018
06:29:45
соответственно в function * watchFunc(action) { ... } обрабатывай результат

Google
Valeriy
03.04.2018
06:30:36
либо если у тебя в виде процесса последовательного это должно идти

то const requestResult = yield take(action)

перед этой командой что то делалось, потом ждешь когда экшин после успешного запроса кинут данные в редакс и тут ты их ожидаешь в payload экшина

Илья
03.04.2018
06:35:19
ты данные грузишь асинхронными запросом и код выглядит примерно так const result = await api.getData(...) if (result...) yield put(action....) там где ты ждешь в саговском вотчере ответ делаешь yield takeEvery(actionName | [...actions], watchFunc )
допусти у тебя на беке экспрес. вот в к тебе пришли на урл users, какой код у тебя будет для обрабоки этого урла? Тебе в экспрессе нужно создать стор, и затем заполнить его данными. Твои действия?

Valeriy
03.04.2018
06:39:54
если нужно ловить смену урла в сторе то нужно подключать <ConnectedRouter внутри <Provider

как то так



в редьюсер загнать import { routerReducer as router } from 'react-router-redux'

router

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



смена роутов сопровождается диспетчеризацией соответствующего экшини

Valeriy
03.04.2018
06:42:55


в саге делаешь yield takeEvery('@router/LOCATION_CHANGE', watchRouter)

и ловишь в watchRouter смену локации

Nikolay
03.04.2018
06:45:52
есть ли смысл использовать redux-actions + redux-promise? или сразу переезжать на саги?

Valeriy
03.04.2018
06:46:33
есть ли смысл использовать redux-actions + redux-promise? или сразу переезжать на саги?
видел как народ из 5 человек лобали очень быстро с использованием redux-act redux-promise redux-loop

но когда проект достиг определенного размера

команда сдулась

все начали путаться и т.д.

Google
Valeriy
03.04.2018
06:47:09
любые изменения в таком проекте начали превращаться в ад

Nikolay
03.04.2018
06:47:24
а вообще в проде люди в основном что используют? thunk, саги или еще что-то?

Vladislav
03.04.2018
06:47:41
thunk или саги, у кого как сложилось

Илья
03.04.2018
06:47:56
если нужно ловить смену урла в сторе то нужно подключать <ConnectedRouter внутри <Provider
мне не нужно ловить смену урла(на беке он не меняется, так как рисуется состояние для текущего и отдается клиенту). Мне нужно на беке получить данные и когда они получены отрисовать приложение. Как на беке понять что данные уже готовы?

Vladislav
03.04.2018
06:48:36
у нас сейчас смесь thunk + saga из-за перехода на саги (уж слишком сложная логика стала на проекте)

Admin
ERROR: S client not available

Илья
03.04.2018
06:49:38
доспусти с санками все просто - мы диспатчим санку - она возврает промис -> промис резолвится -> данные готовы -> можем рендерить

Vladislav
03.04.2018
06:50:29
Илья
03.04.2018
06:51:55
запустил сагу - дождался резолва саги через промис task.done - отдал данные
я так понимаю если у меня стоит takeEvery то сага же не зарезолвится?

Vladislav
03.04.2018
06:54:14
я так понимаю если у меня стоит takeEvery то сага же не зарезолвится?
мне вот кажется подход тут не тот с запуском саги, но это мое ИМХО - создай и запускай bootstrapSaga, которая запустит другие саги и жди ее резолва (избигай как раз вот этих watcher'ов с их циклами в takeEvery)

Илья
03.04.2018
06:55:33
Vladislav
03.04.2018
06:56:11
takeEvery запускает сагу на какой-то экшн, в чем проблема напрямую запустить эту сагу без экшена?

на клиенте у тебя останется takeEvery

Илья
03.04.2018
06:57:08
Vladislav
03.04.2018
06:58:16
оххх, читаю это и понимаю что ничего не понимаю)
вторым аругментом у тебя takeEvery лежит ссылка на сагу, верно?

Vladislav
03.04.2018
07:00:48
вот, ты ее можешь запустить напрямую без takeEvery (в рамках SSR) с помощью таких средств как fork, spawn, runSaga, sagaMiddleware.run все они реализуют Task интерефйс

и уже дождаться когда она зарезолвится через промис task.done, а далее отдать на клиент данные

Google
Valeriy
03.04.2018
07:07:16
ну то есть Владислав предлагает во всех еатах где вызывается перехватываемый экшин после него автоматически запускать нужную сагу? :)

грубо говоря, заменить один takeEvery(ACTION, foo) на dispatch(ACTION); foo(); или yield put(ACTION); foo(); во всех местах где они вызываются

Илья
03.04.2018
07:09:22
вот, ты ее можешь запустить напрямую без takeEvery (в рамках SSR) с помощью таких средств как fork, spawn, runSaga, sagaMiddleware.run все они реализуют Task интерефйс
так надо это осмыслить... просто пока все равно звучит как "реализовать разную логику для клиента и бека" для определения какие таски запускать

Vladislav
03.04.2018
07:09:25
я предлагаю в рамках SSR когда тебе нужно подготовить данные, запустить специальную сагу, которая подготовит все данные (возможно будет послыать эти экшены) и ожидая ее через промис, в случае резолва отдать на клиент данные

грубо говоря, заменить один takeEvery(ACTION, foo) на dispatch(ACTION); foo(); или yield put(ACTION); foo(); во всех местах где они вызываются
вообще дич какая-то написана) мое предложение в этом грубо говоря: sagaMiddleware.run(foo)

но лучше запустить сагу, которая форкнет foo и другие необходимые саги

robertson
03.04.2018
07:24:42
Ребята привет. Подскажите, пожалуйста, либу для валидации форм

Или лучше все самому написать?

Eugene
03.04.2018
07:25:43
?что угодно, главное не redux-form

Kelin
03.04.2018
07:26:07
*картинка осла.jpg* redux-form

robertson
03.04.2018
07:26:36
окай, спасибо

Антон
03.04.2018
07:28:49
я вот не пойму. тут отговаривают от redux-form но в то же время глобально он используется чаще http://www.npmtrends.com/redux-form-vs-formik-vs-final-form

Alexander
03.04.2018
07:30:03
Тоже интересно, а что плохого в redux-form?

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