
Alexander
13.04.2016
14:28:53
таааак, мне нужно разбираться в матчасти)
да нет здесь никакой матчасти. надо пробовать и смотреть как удобнее/лучше. Сейчас куча всяких правил типа "редьюсеры должны быть чисыми", "нельзя использовать стейт компонентов", "компоненты должны быть поделены на тупые и умные" и т д. Будешь слепо этому следовать этому, а потом окажется, что для твоего приложения это совсем не подходит

Roman
13.04.2016
14:29:20
Слушайте, но react-reselect — это же получается просто надстройка над редьюсерами? Которая просто абстрагирует получение информации о состоянии отдельных частей стейта
То есть у меня два приложения были простые — и все эти проверки были в редьюсерах
То есть просто необходимости в дополнительной абстракции не было

Google

anoru
13.04.2016
14:30:20
думаю, не стоит прыгать прямо сейчас на reselect. Он ничего не поменяет в твоем аппе, лучше правильную архитектуру настроить, разобраться, а потом уже прикрутить

Roman
13.04.2016
14:30:22
> Есть state, а есть dependant state, первый в редьюсере, а второй — лучше в селекторах
Второй рассчитыватеся из основного, да

anoru
13.04.2016
14:31:32
твой вариант с сапером я бы и сам запихал в handleClick предварительно выкинув в утилс. Не люблю логику в actionCreator, потом запустаться можно
Но бывают исключения, например

Vladimir
13.04.2016
14:32:26
а разве "игра закончена" - это не стейт?

Roman
13.04.2016
14:32:28
У меня клик прогоняется через action в reducer — а там уже осуществляются все проверки и при необходимости меняется стейт (добавляется флаг в соответствующий элемент двухмерного массива)
Соответственно на стороне компонента — это просто вызов экшна в handleClick, все, связанное с изменениями — в reducer

anoru
13.04.2016
14:33:07
export const apiGetNextPost = (data, callback) => ({
mode: 'GET',
type: 'GET_NEXT_POST',
url: 'posts/next',
data,
onSuccess: (res, dispatch) => {
if (res.test) {
dispatch(OkOkOkOkOk(res.post.id));
}
callback(res);
},
});
типа эта штука работает через мидлвару
та загрузит суперагентом инфу. Сработает onSuccess
в нем передастаться управление в кэллбек, он сработает в компоненте
и тут же ты можешь задиспатчить еще одно действие
ну, и еще сработает промис мидлвара, которая добавит _SUCCESS

Google

anoru
13.04.2016
14:33:52
и в редюсере будет 'GET_NEXT_POST_SUCCESS'
таким образом можно получить значение в редюсере, в экшене, в кэллбеке вызова в компонента
в трех местах)

Oleg
13.04.2016
14:34:28
Смотрите redux-promise-middleware

anoru
13.04.2016
14:34:34
ага
тут она тоже юзается. onSuccess нужен лишь для того, чтобы передать в кэллюек или вызвать еще один экшен, если нужные условия

L'Alchimiste
13.04.2016
14:36:08
о, привет

Artem
13.04.2016
14:36:12
мидлвэр как примерах абрамова из realworld redux?

anoru
13.04.2016
14:36:36
https://github.com/pburtchaell/redux-promise-middleware/blob/master/src/index.js
я юзаю эту, но чуть поправил, чтобы работала с еще одной мидлварой

Artem
13.04.2016
14:37:12
ну да, похожа на абрамовску
ю

anoru
13.04.2016
14:37:48
вторая мидлвара для генерации суперагент запроса. Она также делает проверку onSuccess, onFailure и как раз вызывает те функции
http://joxi.ru/v29L6nnfGKZLkm
впрочем joxi как обычно умер )

Denis
13.04.2016
14:45:17
Ребят, а есть какая-нибудь ссылка, которая в картинках показывает, как отключать нотификации для группы?
Добавлю в описание группы

anoru
13.04.2016
14:46:10
Только если самому делать - если через веб интерфейс, то надо кликнуть на название канала. Хотя, пожалуй, ты уже знаешь)

Renat
13.04.2016
15:15:00
Олег!

Ҫѐҏӗѫӑ
13.04.2016
15:21:56
когда закончится гонка чатов по реакту?

Google

Alexander
13.04.2016
15:22:44
когда я доделаю свой. вот тогда точно все перейдут на него

Roman
13.04.2016
15:25:31
react chat fatigue

Alexey
13.04.2016
15:31:16
а потом появятся почтовые рассылки :)

Roman
13.04.2016
15:32:37
почтовые переписки!

Ҫѐҏӗѫӑ
13.04.2016
15:33:25
эхо конференции

L'Alchimiste
13.04.2016
15:37:18
до голубиной почты с дискетами ещё не дошли?

Ҫѐҏӗѫӑ
13.04.2016
16:05:39
кто в Питере? скажите, есть ли смысл идти на spb frontend сегодня тем кто не верстает?
и будет ли афтепати?

Fyodor
13.04.2016
16:17:52
Я пойду чтобы в хорошей рабочей атмосфере покодить]

Denis
13.04.2016
16:18:39

Ҫѐҏӗѫӑ
13.04.2016
16:20:10
у нас MoscowJS десант

Vladimir
13.04.2016
16:20:21
кстати можно написать бота, который будет каждый день задавать вопросы.
- как сделать серверсайд-рендеринг?
- я хочу вставить яндекс-карты, мне писать миддлваре или вставить их в экшн?
- как в реакт-роутере пропихивать пропсы в роут-компоненты?
и подписать его на все чатики

Ҫѐҏӗѫӑ
13.04.2016
16:20:46
^ збс

Oleg
13.04.2016
16:24:51
Я за hr бота поработаю. - - - Работа нужна?
- А если найду?

Alex
13.04.2016
16:39:29
Хорошая спека вырисовывается для ML / чатбота, обслуживающего запросы тематических комьюнити
Это пожалуй стэковерфлоу ниша
Надо посмотреть у них
Для ФБ того гляди точно склепают ботика
Всмысле для их Мессенджера
Участники комьюнити могут подписаться на отдельные треды и саппортить/обучать бота

Google

Alexander
13.04.2016
17:30:21
а как кто именует компоненты? все придерживаются рекомендации фейсбука давать всем компонентам уникальные имена? У меня уже очень длинные выходят. Боюсь рано или поздно в лимит на длинну файла упрусь :)

Artem
13.04.2016
17:31:09
еще по бэму можно попробовать )

Alexander
13.04.2016
17:33:48
ну тоже получатся длинные, получается надо в имени файла его путь отражать полюбому, что бы он был уникальным

Denis
13.04.2016
17:35:39
Я за flat структуру с уникальными именами. Если надо иерархию — даёшь небольшой префикс. Всё по алфавиту всё равно в списке.

Artem
13.04.2016
17:36:10
я сейчас пишу на нэтиве, и все сцены соответствуют именам ресурсов, которые они отражают, соответственно hotels - список, hotel - сцена с отелем и тд

Alexander
13.04.2016
17:36:55
и сколько у вас компонентов в проекте что влезают в плоские списки?
кажется больше 10-20 файлов в одной папке это уже анриал

Artem
13.04.2016
17:37:16
24 )

Alexander
13.04.2016
17:37:20
ок))

Artem
13.04.2016
17:39:39
я думаю что нибудь такое попробовать, деление на dummy smart не спасает
http://bradfrost.com/blog/post/atomic-web-design/

Denis
13.04.2016
17:40:19
У нас 300 компонент в одной папке (это ~700 файлов т.к. js+css+etc). Команда пользуется sublime fuzzy search, очень удобно. И чёткие префиксы решают.
Пробовал структуру где каждая компонента в отдельной папке — не работает, т.к. тупой Atom пишет index.js в заголовке каждой вкладки. Sublime чуть умнее, но недалеко ушёл.

Alexander
13.04.2016
17:41:28
у меня сначала были две папки для дамми и смарт, "как завещал великий ден", но потом понял, что это ужасно неудобно. Теперь кладу смарт компонент рядом с тупым компонентом если он нужен и именую так:
Blah.js
BlahContainer.js

Artem
13.04.2016
17:42:06
у меня все смарты обвязаны с редуксом через коннект, а дамми о стэйте ничего не знают

Alexander
13.04.2016
17:42:08
700 файлов в одной папка, уоу

Denis
13.04.2016
17:42:51
ctrl+k, ctrl+b
и ctrl+p
?

Dmitrii
13.04.2016
17:42:55
если репозиторий очень большой, то уже неважно какая структура директорий :) приходится fuzzy finder пользоваться и проще наверное плоской структурой пользоваться

Alexander
13.04.2016
17:43:31
четкие префиксы это замена папок? все равно же они иерархические получаются, типа:
Blog.js
BlogPost.js
BlogPostComment.js
?

Dmitrii
13.04.2016
17:43:33
у меня был проект на пару тысяч компонентов. если все организовывать в красивую структуру, то рано или поздно приходит '../../../../../../' ад

Google

anoru
13.04.2016
17:43:35
в пользу такой вложенности:
1) стили рядом с компонентом
2) json файлы переводом там же
3) можно раздробить на мелкие подкомпоненты, которые юзает лишь этот компонент и положит рядом (если надо), сам так не делаю
4) тесты в этой же папке
в сумме выходит файлов 10 на 1 компонент