
Eugene Y.
20.02.2018
23:25:44

Oleg
20.02.2018
23:25:54
а если они вообще никак не связаны, но почему-то вызывают друг друга, то че мы тогда здесь вообще обсуждаем

Eugene Y.
20.02.2018
23:27:03

Google

Dimanius851
20.02.2018
23:27:13
версия 16.2 нужна
теперь на это <React.Fragment>{children}</React.Fragment> ругается Cannot read property 'toLowerCase' of undefined

Stepan
20.02.2018
23:27:40

Oleg
20.02.2018
23:27:52

Stepan
20.02.2018
23:28:02

Dimanius851
20.02.2018
23:28:19
у меня toLowerCase нигде нет

Eugene Y.
20.02.2018
23:28:37
для такой ерунды не охота хранилище подключать

Oleg
20.02.2018
23:28:57

Eugene Y.
20.02.2018
23:29:13

Oleg
20.02.2018
23:29:57

Dimanius851
20.02.2018
23:30:14

Женя
20.02.2018
23:30:20
Решил потыкать Громмет, открыл доки, а там инсталяция либо через их тулзы и кли, либо древную версию. окееей.

Stepan
20.02.2018
23:30:32

Google

Stepan
20.02.2018
23:30:47
Хоть один аргумент против?

Oleg
20.02.2018
23:31:12
Почему бы нет?
потому что это как совать везде jQuery, когда надо querySelector заюзать

Stepan
20.02.2018
23:31:25
есть кейс, который покрывается редаксом
есть редакс
всё

Oleg
20.02.2018
23:31:56
есть редакс
а есть задача, которая прекрасно решается без него

Eugene Y.
20.02.2018
23:34:08
Почему бы нет?
потому что его (редакс) придется потом убирать т.к. это нужно только мне для отладки

Stepan
20.02.2018
23:36:00
А чем тебе обычная консоль не нравится?
?)

Eugene Y.
20.02.2018
23:38:13
ща нарисую зачем мне это

Stepan
20.02.2018
23:38:20
давай
делать всё равно нехуй
)

Eugene Y.
20.02.2018
23:43:24
заебался ловить баги в браузерной консоли и решил прикрутить собственную консоль к каждому экземпляру объекта
надо чтобы в нее кастовалось все что в объеуте происходит

Google

Stepan
20.02.2018
23:45:17
сделай hoc
прикрути его везде, где надо
профит

Eugene Y.
20.02.2018
23:45:57
чёт я про хок не подумал
годная мысль

Kelin
20.02.2018
23:53:54
Хоки, ловящие баги
Хок, скрывающий боль

Stepan
20.02.2018
23:56:35

Andrew
20.02.2018
23:59:12
такая кострукция условностей нужна, когда нужна очень краткая форма, иначе надо использовать if

Oleg
21.02.2018
00:03:01

Andrew
21.02.2018
00:04:04
но опасна

Oleg
21.02.2018
00:06:59

Andrew
21.02.2018
00:07:06
const tasks = tryLoadTasks() || initTasks;
function tryLoadTasks() {
try {
return JSON.parse(localStorage.getItem("tasks");
} catch(e) {
console.warn('in loading got error');
}
return null;
}
не стоит забывать об эксепшене у парсера

Oleg
21.02.2018
00:09:10

Andrew
21.02.2018
00:09:31
ну мы тогда одно и тож написали)

Alexandep
21.02.2018
02:40:55
Всем привет! Я только пришел в React-мир и реализую первые вещи! Пришел поздороваться с сообществом!:)

Artyom
21.02.2018
04:04:28
https://scrimba.com
Прикольно! Смотришь скринкаст, ставишь на паузу, форкаешь текущий код, играешься с ним, смотришь дальше

Google

ed
21.02.2018
04:34:50
А над этим у них стоят контроллеры
А под контроллером модели у которых помимо орм методов еще куча кастом логики

code4aman
21.02.2018
06:03:28
Microfrontends не про это ли?

Alexander
21.02.2018
06:07:08
про это но опыта внедерения поддержки и разработки нигде нет(

code4aman
21.02.2018
06:11:21
А там откуда ты эту картинку достал тоже монолитный бандл в коде?
А, там нет даже reference implementation?

Alexander
21.02.2018
06:18:05
Нет исходников
Даже

code4aman
21.02.2018
06:22:51
Да-а, представляю, какой будет зоопарк фреймворков у конечного юзера на странице...

Cenator
21.02.2018
06:44:08
В описание загляните

Alexander
21.02.2018
06:44:13

Nikita
21.02.2018
06:44:49

Cenator
21.02.2018
06:45:02
(описание чата)

Nikita
21.02.2018
06:46:24

Cenator
21.02.2018
06:46:47
Правила для всех)

Paul
21.02.2018
06:48:48
Подскажите, есть какая-нибудь библиотека, которая редьюсеры позволяет задать просто как объект {action: function}?
Что-то типа такого
{
user: {
ADD_USER: (state, action) => {...},
REMOVE_USER: (state, action) => {...},
},
}
вместо классического
{
user: function (state, action) {
switch (type) {
case 'ADD_USER':
...
case 'REMOVE_USER':
...
default:
return state;
}
},
}

Cenator
21.02.2018
06:49:30
Подскажите, есть какая-нибудь библиотека, которая редьюсеры позволяет задать просто как объект {action: function}?
Что-то типа такого
{
user: {
ADD_USER: (state, action) => {...},
REMOVE_USER: (state, action) => {...},
},
}
вместо классического
{
user: function (state, action) {
switch (type) {
case 'ADD_USER':
...
case 'REMOVE_USER':
...
default:
return state;
}
},
}
Я не вникал что тебе нужно, но можешь посмотреть сюда
http://npmjs.com/redux-symbiote

Google

Paul
21.02.2018
06:59:48
Да, что-то похожее, спасибо
Есть еще redux-box но там setup сильно меняется


Max
21.02.2018
07:01:38
вы запросили список юзеров и список журналов и ... еще 10 наборов разнородных данных. как будет выглядеть функция-редьюсер? будет ли она "редьюсер"? что будет со стейтом, когда изменится список журналов? теперь уложите это в идею редакса. это редакс? , теперь добавьте туда шаред стейт компонентов - как его обрабатывать? вас сильно это спасло от констант?
Попробую объяснить поподробней - я когда писал проект на редаксе решил не дублировать редюсеры и не создавать кучу отдельных экшенов. Потому что в таких редюсерах непременно будет дублирование функционала подобно такому
case "CREATE_PROJECT": {
return {...state, projects: {...state.projects, [action.id]: action.data}
}
case "CREATE_TASK": {
return {...state, tasks: {...state.tasks, [action.id]: action.data}
}
case "CREATE_COMMENT": {
return {...state, comments: {...state.comments, [action.id]: action.data}
}
case "UPDATE_PROJECT": {
return {...state, projects: {...state.projects, [action.id]:{...state.projects[action.data.id], ...action.data}}
}
case "UPDATE_TASK": {
return {...state, tasks: {...state.tasks, [action.id]:{...state.tasks[action.data.id], ...action.data}}
}
case "UPDATE_COMMENT": {
return {...state, comments: {[action.id]:{...state.comments[action.data.id], ...action.data}}
}Из всего этого меняется только имя таблицы и логично не дублировать функционал и передать имя таблицы параметром
case CREATE: {
return {...state, [action.table]: { ...state[action.table], [action.id]: action.data}}
}
case UPDATE: {
return {...state, [action.table]: { ...state[action.table], [action.id]: {...state[action.table][action.id], ...action.data}}}
}Когда с редаксом мы вынуждены нормализировать стор то все данные будут организованы в плоском списке айдишников в хеш-таблицах. И для того чтобы не дублировать код как выше где дублируется весь код кроме имени мне кажется вполне логичным сделать передачу таблицы параметром и тогда (в идеале) количество экшенов и редюсеров у нас сведется к 3 (плюс еще GET но он обработается в миддлварке). Дальше естественно есть некая бизнес-логика которая не затрагивает добавление, удаления или изменение не одного а много объектов. Эту логику можно конечно оставить в редюсерах и создавать отдельные экшены и редюсеры но почему тогда вообще не использовать редакс как базу данных а логику из редюсеров вынести в отдельные функции вроде thunk-ов или обычных функции. Например тот же редюсер и экшен которы можно назвать как UPDATE_POST_AND_CREATE_TASK а можно просто вынести в thunk который задиспатчит экшен UPDATE передав параметром таблицу "posts" и задиспатчит экшен "CREATE" и передаст параметром таблиу "tasks". И таким образом можно реализовать любую бизнес-логику и не ограничивать себя в невозможности выполнять сайд-эффекты как в редюсерах


andretshurotshka?❄️кде
21.02.2018
07:03:14
логично юзать combineReducers для одинаковых редьюсеров

Tauka
21.02.2018
07:09:02

Андрей
21.02.2018
07:09:15
может вам просто нужен НЕ редакс?

Andrew
21.02.2018
07:09:24
Ээээ
Вот

andretshurotshka?❄️кде
21.02.2018
07:09:29
а actions зачем?)

Andrew
21.02.2018
07:09:51
Всегда будет много одинакового кода
Зато очень легко трекаются все имения стора