
Again
02.11.2017
20:22:55
А в телеграме?

Cenator
02.11.2017
20:23:30

Duego
02.11.2017
20:24:45
ребят

Дмитрий
02.11.2017
20:24:52

Google

Duego
02.11.2017
20:25:56
делаю авторизацию через соц сеть, как открыть новое окно?

Nikita
02.11.2017
20:26:11
Или я плохо шутки понимаю

Stepan
02.11.2017
20:28:14
@ZeroBias, ты когда-то рассказывал, как тебе помогает функциональщина, но я не могу найти. Что у тебя за задачи такие?

Polina
02.11.2017
20:30:05
Подскажите в redux-form есть возможность инициализировать две формы с одним сабмитом?

Andrew
02.11.2017
20:31:07

Дмитрий
02.11.2017
20:32:56

Slava
02.11.2017
20:33:03

Дмитрий
02.11.2017
20:33:26
Ок)

Duego
02.11.2017
20:33:37
делаю авторизацию через соц сеть, как открыть новое окно?

Polina
02.11.2017
20:35:09
дело в том, что у меня есть на одной странице форма и таблица (разные компоненты) На таблице можно данные вручную менять. На сабмите надо одновременно и таблицу сапдейтить и создать новую запись в бд исходя из данных в форме. Пока не пойму как подобраться к задачке

Andrew
02.11.2017
20:39:33
Просто два сабмита
Которые передают данные в один и тот же метод

Google

Andrew
02.11.2017
20:40:24
Который принимает два параметра - данные с формы, и с таблицы

Dmitry
02.11.2017
21:00:12
https://github.com/ecomfe/redux-managed-thunk
блин вроде бы идея хорошая
но что-то звездочек мало

kana
02.11.2017
21:24:48
я чет не понял, стейт между вызовами thunk-а?

Dmitry
02.11.2017
21:27:03

kana
02.11.2017
21:27:17
Да

Dmitry
02.11.2017
21:27:31
ну типа базовый санк в котором вызываются какие-то хуки
и потом через композицию добавляется какой-то функционал
или отмена екшона или аптимистик апдейты
ну по сути подход это, const thunk = f;
const enhancer = (thunk) => args=> dispatch => thunk(args)(dispatch)
и просто набор енхенсеров такого вида
Я хотел что-то такое по фукнционалу в своей либке, но с более удобным апи
ну и конфигурирование в через такую жесткую композицию мне не нравится
уж очень много фукнций будет вызываться ради одного екшона

kana
02.11.2017
21:32:38
хм, прикольная идея, да

Dmitry
02.11.2017
21:32:39
но вот такие идеи весьма прик
но оно как-то не очень структурировано и не очень удобно
что-ли

Google

kana
02.11.2017
21:34:24
вот какой вопрос, есть ли где реализация котовых конструкторов редьюсеров?)

Dmitry
02.11.2017
21:34:42
констуктор редюсеров ?
мультиредюсер ?

kana
02.11.2017
21:35:04
редьюсеры зачастую бывают шаблонными, например для списков, асинхронные, асинхронные списки
разные только экшоны

Dmitry
02.11.2017
21:35:48
А что тебе надо от асинхронного редюсера ?)
ну точнее асинхронных списков

kana
02.11.2017
21:36:28
ну я имел в виду списки элементов, которые мы загружаем)
собственно конструктор редьюсеров, это функция, принимающая конфиг (экшоны для вызова?, поля?) и отдающая редьюсер. Или функция, которая ничего не принимает, а отдает и редьюсер, и экшоны. Главное, что она абстрагирует какой-то шаблон редьюсеров. И важно, чтобы они были компосабл и расширяемые

Dmitry
02.11.2017
21:37:59
Ну тип тут абстракция ввиде редюсера который конфигурится ненужна

kana
02.11.2017
21:38:39
да если бы я сам писал, вышло бы сложно, поэтому и спрашиваю, мб есть какие-то простые реальные решения, которые я проспал

Dmitry
02.11.2017
21:39:21

kana
02.11.2017
21:41:18
да всякие uniq([...state, ...action.payload.items.map(item => item.id)]) повторяются из раза в раз. Частично решается выносом самого этого кода в функцию, но остается же .on(somethingResonse, ...)

Dmitry
02.11.2017
21:41:55
хм
юзай normalize

Alex
02.11.2017
21:42:35
Нормализ решит проблему с общими данными, но с локальными нет

Dmitry
02.11.2017
21:43:12
ну я заметил что нормалайз неплохо помогает с таким шаблонным кодом, где он казалось бы не надо даже
https://github.com/zhDmitry/rrethunk/tree/master/examples
вот примерчик если интересно

Google

Dmitry
02.11.2017
21:43:49
туду с optimistic апдейтами https://zhdmitry.github.io/rrethunk

kana
02.11.2017
21:44:31
бля, начал по привычки ридми читать

Dmitry
02.11.2017
21:44:42
ридми выше
но это ридми к либке
там может быть есть немного говнокод, но он там специально)
Хотел написать пример и понять в чем проблема при написании асинхронных действий и редюсеров с оптимистик апдейтами
и в каком духе строить апи для библиотечки что бы было удобно

Alex
02.11.2017
21:47:01

kana
02.11.2017
21:48:10
так, я не понял, как тут селектор поможет?
типа селекторы в редьюсере для пропсов?

Dmitry
02.11.2017
21:48:43
и которые можно конфигурить

Alex
02.11.2017
21:48:55
По идеи можно сделать шаблоны изменения стейта и только мапить поддрево тогда получится что-то типа
add_to_state(state => state.section)

Dmitry
02.11.2017
21:49:11
on(actions.fetch, mergeIds(‘id’))

Alex
02.11.2017
21:49:12
А про слово select выбор

kana
02.11.2017
21:49:25
так и я не про либу

Alex
02.11.2017
21:49:42
Ну вот выше привёл пример
Что нудно будет указывать только локацию изменения

kana
02.11.2017
21:50:11
так зачем, у меня редьюсеры и так атомарны

Google

kana
02.11.2017
21:50:16
нет вложенных объектов
я понял, что ты имел в виду, ты почти изобрел линзы, только мутабельные и только с гетом
хотя не факт, что я понял, конечно

Alex
02.11.2017
21:55:30
Я для себя сделал конструкторы типа
SectionA(SectionB({a:0}))
Что создаёт
{SectionA:{SectionB :{a:0}}}
А редьюсер мидлвар делает иммутабельное обновление
Работает как immutable dot какая-то либа не помню
Слишком сложно чтобы с мобилы рассказать, что я имел в виду, пойду лучше спать

Dmitry
02.11.2017
22:00:17
какое апи будет лучше
типа два примерчика
withCancel это конфигурация через higher order function, а второе через контекст
а второй пример

kana
02.11.2017
22:01:26
мне кажется, тут проще тупо взять саги

Andrew
02.11.2017
22:02:26
Ребзи, я так и не понял штуку с реселектом. Как
Мне по событию применить другой селектор к стейту ?

Dmitry
02.11.2017
22:02:34
А как в сагах транзакции и оптимистик апдейты ?

kana
02.11.2017
22:03:32
не знаю ничего про оптимистики, но takeLatest же там из коробки

Dmitry
02.11.2017
22:04:22
и я вызываю его в компоненте
но мне такое решение не нравится