
Valeriy
20.04.2018
22:45:35
это упростит приложение
и его понимание

Artem
20.04.2018
22:45:38
есть ивент, в класс, нет ивента и стейта в функцию)

Valeriy
20.04.2018
22:46:01
тут же вопрос не в кол-ве кода

Google

Valeriy
20.04.2018
22:46:06
лишняя буква тут там
а в пороге вхождения в проект
новых людей
да и сам через полгода когда заглянешь в код
чтобы не рисовал схемы на листочках

Artem
20.04.2018
22:46:53

Valeriy
20.04.2018
22:47:07
ну git blame
есть хороший плагинчик для любителей vscode
показывает прямо в коде кто чего когда внес

Artem
20.04.2018
22:48:05
да это нужно, один я на проекте)

Valeriy
20.04.2018
22:48:19
когда человек на проекте один
это самое страшное
особенно когда он варится в собственном соку

Google

Valeriy
20.04.2018
22:48:46
и нет конкуренции никакой и нет спорных моментов

Artem
20.04.2018
22:48:59
это самое страшное
ага ревью не кому сделать, и плюс начинаешь понимать систему и писать так как будто все сразу догонять что ты тут напридумывал)

Valeriy
20.04.2018
22:48:59
в такой ситуации получается 99% говнокод
ну тут дело даже не в тебе
не в твоих проф навыках

Artem
20.04.2018
22:49:31

Valeriy
20.04.2018
22:49:31
просто так устроен мозг
человек не может себя объективно сам оценивать
соответственно всё что ты сделал, это всегда правильно
пока тебя не ткнет носом кто-то такой же умный или умнее тебя


Max
20.04.2018
22:51:08
Как и достоинств)
Ну этот подход как бы прямо противоположен хранению редюсеров в папочке с компонентом. Я например нашел достоинства в этом подходе полностью нормализованного стора который похож на базу данных - можно избавиться от кучи болерплейта, спроектировать работу с данными и сущностями не подстраиваясь под интерфейс и отображение. Попробую привести пример.
Сначала создаем редюсер который в нормализированом сторе обеспечит базовые операции
dispatch({
type: "add", //"update" или "delete"
table: "todos" // или "posts" или любая другая таблица
id: 2112,
data: {...}
})Дальше можно добавить миддлварку чтобы перехватывала экшен {type: "fetch", table: "...", params: {..}} и будет фетчить от сервера данные и обновлять этот стор. Дальше можно добавить еще в миддлварке перехват экшенов "ADD", "UPDATE", "DELETE" чтобы кроме обновления стора еще автоматически посылался запрос на сервер и при необходимости можно либо сразу обновить стор (оптимитические обновления) либо подождать ответа.
А еще дальше можно добавить автоматическое поддержание с обратных ссыллок - вместо того чтобы диспатчить два экшена при добавлении таска в проект (один для создания а второй для добавления айдишника в массив тасков в проект)
newTask = dispatch({
type: "add",
table: "tasks",
data: {
title: "newTask,
....
}
})
dispatch({
type: "update",
table: "projects",
id: project.id,
data: {tasks: [..project.tasks, newTask.id]} }
})можно было задиспатчить один экшн вместо двух
dispatch({
type: "add",
table: "tasks",
data: {
project: project.id,
title: "new task",
...
}
})
и редюсер по задекларированной заранее схеме (например можно описать схему сущностей так
{
projects: {
tasks: {type: "many", table: "tasks" }
}
tasks: {
project: {type: "one", table: "projects"}
}
}увидит поле project при создании таска и автоматически добавит таск в массив тасков у проекта.
В итоге уменьшается количество кода связанного с поддержкой обратных ссылок


Abu
20.04.2018
22:51:46
это самое страшное
Ну не всегда, человек может спрашивать советы в чатах и т.д, порой даже легче писать код одному, чем с коллегой, который пишет говнокод и не воспринимает критику.

Artem
20.04.2018
22:52:20

Таймураз
20.04.2018
22:52:43

Artem
20.04.2018
22:53:10

Таймураз
20.04.2018
22:53:36

Valeriy
20.04.2018
22:53:52

Artem
20.04.2018
22:53:56

Roman
20.04.2018
22:54:16

Artem
20.04.2018
22:58:27
кстати, что есть для редакса для jump состояния, ну типа откатится до какого нить выполнения экшена при ивенте, может либа есть какая нить понятная?

Google

Valeriy
20.04.2018
22:59:28
redux dev tool
запускаешь
ждешь накопления экшинов
делаешь паузу
и начинаешь ходить туда сюда джампами

Artem
20.04.2018
23:00:44
это я знаю, мне по другому надо, я подписываюсь на history(который с реакт роутера), и при нажатие кнопке назад, хочу откатить приложение

Valeriy
20.04.2018
23:01:23
и?

Nutscracker
20.04.2018
23:01:41

Artem
20.04.2018
23:02:49

Valeriy
20.04.2018
23:03:06
ты же правильно подписываешься через <ConnectedRouter history={history}> ?

Artem
20.04.2018
23:04:11
надеюсь правильно, я на сам хистори подписался
когда юзер нажмет кнопку вперед или назад, надо откатить стейт до определенного момента
пока не особо понимаю, как это реализовать

Valeriy
20.04.2018
23:05:00
ну вот эта хренть не нужна history.listen((location, action) => {});

Nutscracker
20.04.2018
23:05:37
я когда то такое на чистом яваскрипте делал))) жуть еще та помнится)))

Valeriy
20.04.2018
23:05:44
в миддлваре добавляешь же routerMiddleware(history) ?

Artem
20.04.2018
23:05:56

Google

Artem
20.04.2018
23:06:06
экшен change_location есть

Valeriy
20.04.2018
23:06:13
ну то есть в редаксе у тебя все ок?

Artem
20.04.2018
23:06:15
но как его переопределить, я так и не понял)

Valeriy
20.04.2018
23:06:16
при смене локаций

Artem
20.04.2018
23:06:19
да в редаксе ок
показывается смена локации, плюс в экшенах могу пулять и т.д.

Valeriy
20.04.2018
23:06:47
а что значит переопределить?

Artem
20.04.2018
23:07:05
у меня урл меняет постоянно, система поиска

Valeriy
20.04.2018
23:07:34
в смысле есть что-то что ты не контролируешь? :)))

Artem
20.04.2018
23:07:37
юзер натыкал, от этого формируется урл и стейт редакса, но как кнопки назад и вперед ни как не могу понять как правильней сделать

Admin
ERROR: S client not available

Artem
20.04.2018
23:08:03
редакс нужен для самих фильтров, а выдача у меня тупо от урла работает и реагирует на него

Nutscracker
20.04.2018
23:08:15
кнопку назад и вперед помнится мне не возможно на данный момент никак переопределить.

Artem
20.04.2018
23:08:48

Nutscracker
20.04.2018
23:09:01
это не возможно, такой возможности браузеры не предоставляют

Artem
20.04.2018
23:09:06
поэтому на хистори и подписался)

Nutscracker
20.04.2018
23:09:10
ты можешь только костыли лепить и редиректы делать

Artem
20.04.2018
23:09:21
не не я имею введу change_location
а понимать когда кнопки работают это просто, там у хистори метка в экшене появляет pop
при пуше, push, так и думаю отличать

Google

Nutscracker
20.04.2018
23:10:49
там блин туча ньюансов..я помню долбался с такой проблемой - меня попросили чтобы при многократном нажатии назад - не выбрасывало с сайта

Artem
20.04.2018
23:10:58
а блин я кажется понял про что ты)
кнопку назад от кнопки вперед фиг отличишь)

Nutscracker
20.04.2018
23:11:15
да
точняк
ты можешь только урл анализировать

Artem
20.04.2018
23:11:31
вообще самые простой вариант для меня, это урл разгерсти и воткнуть новые данные в редакс)

Nutscracker
20.04.2018
23:11:31
и есть событие вроде ухода с сайта

Artem
20.04.2018
23:11:47
ну это как жестковато что ли)

Nutscracker
20.04.2018
23:12:07
тебе задача облегчается редаксом, ты можешь сопостовлять состояния урлам

Alex
20.04.2018
23:12:12
как-то так

Artem
20.04.2018
23:13:09
но метод мне не нравится почему то)

Nutscracker
20.04.2018
23:13:20

Alex
20.04.2018
23:13:22
Form и Validation это расширеные компоненты формы с добавлением типа модели формы

Valeriy
20.04.2018
23:13:23
у тебя же с самого начала все телодвижения по роутам пишутся в редакс
включая Back/Forward

Artem
20.04.2018
23:14:03

Valeriy
20.04.2018
23:14:20
бррр не понял

Nutscracker
20.04.2018
23:14:54