
Yaroslav
20.05.2018
22:57:29
юзаю реакт редакс, при апдейте стора, будет рендориться только если стор используется в функции render?

Andrey
20.05.2018
22:58:33
Будет рендерится что? Ну хотя бы читайте свои сообщения перед тем как отсылать.

Kendr
20.05.2018
22:58:34

Yaroslav
20.05.2018
22:59:35

Google

Andrey
20.05.2018
23:00:07
А с пропсами работа уже зависит от того, что написано в cNU
Или как там этот метод лайфсайкла называется? Короче, лучше уточнить в документации.

Kendr
20.05.2018
23:01:11
cnu?
ето че

Дмитрий
20.05.2018
23:01:19
Лол, так работают промисы же

Andrey
20.05.2018
23:01:31
А, sCU, вспомнил.

Kendr
20.05.2018
23:01:45
Работа с пропсами не зависит от шуд компонент апдейт
Рендерер зависит

Andrey
20.05.2018
23:02:03
А чём проблема?

Alexander
21.05.2018
03:27:51
Есть такой массив роутов
type Routes = {
path: string,
component?: React.Component,
routes?: Array<Routes>
}
const routes: Array<Routes> = [
{
path: '/',
component: Main,
},
{
path: '/auth',
routes: [
{
path: '/',
component: Auth
},
{
path: '/register',
component: Register
}
]
}
];
Как такое распарсить? Может уже есть готовые решения?


Pavel
21.05.2018
03:49:52
Всем добрый день! По долгу службы временно вылез из бэкенда и делаю SPA на react/redux. Все отлично, но хотел бы прояснить банальные вещи. Подскажите люди добрые:
1) Как у клиента обновлять приложение? Деплои идут часто, а в SPA нужно обновить страницу, чтобы изменения вступили в силу, что не гуд. Мне нужно, чтобы приложение ОБЯЗАТЕЛЬНО рефрешнулось на клиенте при деплое. Как вы поступаете? Контроль версии по вебсокетам? Есть ли готовые ноу-хау?
2) При первом подходе я использовал так называемую duck-структуру проекта, где в сторе на каждый scene был отдельный набор экшенов, редьюсеров и т.д. Там же в экшенах были редиректы. Т.е. при успешном добавлении комментария сделай редирект по react-router на страницу поста.
НО! Как я потом понял, теряется смысл редакса, я узнал в процессе больше про всякие селекторы и т.д. и как мне кажется duck-структура по философии это не к redux. Теперь вопрос: Какую структуру вы используете для больших приложений? Как работаете с редиректами в redux?
Спасибо всем, кто поможет

Google

Александр
21.05.2018
03:52:06
на learn.javascript.ru как раз в продвинутом курсе по реакт юзают duck
если есть деньги вы можете записаться на курс, иначе этот курс можно найти тут https://coursehunters.net/
Сам курс http://learn.javascript.ru/courses/advreact
по редакс еще есть хороший курс тут https://codedojo.ru/home
его так же можно найти на курсхантерс

Pavel
21.05.2018
03:55:37
Я прошел и на udemy заранее и на egghead.io и книгу от Дэна Абрамова прочитал. Но там совсем мелкие приложения. И по деплою особо ничего нет.

Александр
21.05.2018
03:56:10
мне кажется - вы не можете перезагрузить страницу пользователя после обновления

Pavel
21.05.2018
03:56:11
Т.е. сейчас две проблемы стоят:
1) Обновление SPA при деплое на клиенте
2) Масштабирование (когда экшенов до 1000 или больше)

Александр
21.05.2018
03:57:01
во vue структура похожа на duck - имею ввиду организацию хранилища

Pavel
21.05.2018
03:57:06

Александр
21.05.2018
03:57:11
это было решено разделением на модули

Pavel
21.05.2018
03:58:38
А логин тоже в рамках SPA на JWT
Раньше аутентификацией управлял бэкенд-фреймворк и пускал в SPA через себя. Я убивал аутентификацию но это спасает на 90% (все таки есть действия не требующие аутентификации и в этом случае рефреша не было). Но теперь это 100% SPA на отдельном сервере и такая штука не пройдет.
Много всего в самом приложении
Поэтому нужен принудительный рефреш
Я слышал, что как-то можно сервис-воркером хэш-сумму основного js файла постоянно считывать и делать банальный window.refersh при несовпадении

Александр
21.05.2018
04:03:02
тоже сейчас пытаюсь силами гугла найти - пока безрезультатно

Pavel
21.05.2018
04:03:25
Да, в интернетах почему-то мало инфы.
Ну может найдутся те, кто решил эту проблему у себя

Google

Pavel
21.05.2018
04:21:40
ПОка продублировал в gitter и написал в твиттер Дэну Абрамову.

Maxim robox
21.05.2018
04:47:28

Sergey
21.05.2018
05:24:42
Привет. Есть условная задача: четыре компонента (один из которых посредник), когда у любого из компонентов меняется состояние, то все остальные реагируют на это (за ислючением посредника) и изменяют свое. Как бы вы реализовали?

Khorark
21.05.2018
05:30:39

Sergey
21.05.2018
05:34:28
Спасибо, а если без контейнера состояний?

D.
21.05.2018
05:37:49

Alexander
21.05.2018
05:43:45
Как во flow привести полученные данные с апи к интерыейсу? Нужна аналогичная запись, которая на ts выглядит так: const result = response.data as IResult;

Oleksandr
21.05.2018
05:46:00


Anton
21.05.2018
05:49:09

Sergey
21.05.2018
05:50:15
Я думал о чет-то типа паб/саб, но сильно заморочно получается. Спасибо

Anton
21.05.2018
05:51:50
Самый простой вариант - берём State из React-powerplug, засовываем в контекст. Готово.

Sergey
21.05.2018
05:52:46
Ну представим, что у нас три компонента, у каждого по кнопке. Я нажимаю на кнопку первого компонента и состояние двух других меняется. При этом компоненты ничего не должны знать друг про друга

Anton
21.05.2018
05:54:18

Pavel
21.05.2018
05:54:24

Oleksandr
21.05.2018
05:55:30
Ну хз, у меня на проекте такая же хрень и у нас есть девопс который занимается билдом

Sergey
21.05.2018
05:56:44
Впрочем, я разобрался, спасибо за советы )

D.
21.05.2018
05:58:16
Спасибо всем, кто поможет
Хз насчет ноу-хау, мы не кешируем индекс хтмл, ко всем остальным ресурсам добавляем таймстемп с временем деплоя и кешируем.
Спасибо всем, кто поможет
Если приложение живет долго без релоада, наверное, самое решение в лоб с нашим подходом - сверять на бекенде таймстемп (читать как версия) с текущей версией проекта и послать релоад. Но это мысли вслух, не выглядит нормальным решением

Google

Григорий
21.05.2018
06:16:40

Nikita
21.05.2018
06:17:02

Admin
ERROR: S client not available

Alexander
21.05.2018
06:17:57
Как в redux-act убрать цифру вначале названия экшена?

Pasha
21.05.2018
06:50:43
Вопрос к гуру, почему данный код создаёт утечку памяти?
const someChannel = channel()
export function* watchSomeChannelSaga() {
while (true) {
const action = yield take(someChannel)
yield put(action)
}
}
export function* testSaga() {
try {
yield put(actions.someAction1())
const callback = (signature) => {
someChannel.put(actions.someAction2(signature))
}
yield call(sign, callback)
} catch (error) {
yield put(actions.someActionFailed(error))
}
}
export default function* () {
yield fork(watchSomeChannelSaga)
}
___
У меня мозг взрывался пока я искал где это происходит, а теперь не понимаю какого хрена. На вопрос зачем так делать - мне нужно задиспатчить экшен, при завершении некого действия в функции из довольно старой либы, которую нельзя заменить. И я н придумал ничего лучше чем сделать это через такой колбэк. Если есть идеи получше, то с радостью выслушаю.

Stepan
21.05.2018
06:54:51

Pasha
21.05.2018
06:56:48

Stepan
21.05.2018
06:57:00
и потом просто делай
const signature = yield call(sign);
yield put(actions.someAction2(signature))

Pasha
21.05.2018
06:58:47
я не имею никакого влияния на функцию sign
всё что я могу сделать, передать ей колбэк

Stepan
21.05.2018
06:59:46

Pasha
21.05.2018
07:00:47
да блин, говорю же, она ничего не возвращает!
данные я откуда возьму?

Stepan
21.05.2018
07:01:25

Pasha
21.05.2018
07:01:34
эта либа её передаёт в колбэк

Stepan
21.05.2018
07:02:16
погугли что вроде callback to promise если не понимаешь о чем я говорю

Pasha
21.05.2018
07:02:47

Dmitrii
21.05.2018
07:14:33


Anton
21.05.2018
07:14:53

Google

Anton
21.05.2018
07:15:09

Pasha
21.05.2018
07:16:13

Anton
21.05.2018
07:16:50
а кто запускает эту сагу и сколько раз?
(первую или вторую?)

Pasha
21.05.2018
07:20:15

sanqa
21.05.2018
07:20:45
сага от санка отличается только тем что там генераторы а там промисы ?

Cenator
21.05.2018
07:21:26
сага это магия, санки просты и надежны как валенок

Artyom
21.05.2018
07:22:43

Anton
21.05.2018
07:23:34
+1, попробуй его вынести

Stepan
21.05.2018
07:24:02

Anton
21.05.2018
07:24:35

Pasha
21.05.2018
07:25:31