These are chat archives for dev-ua/reactjs

23rd
Jun 2015
Andrew Gurinovich
@altmind
Jun 23 2015 08:53
ребят, а нужны ли вообще в flux-овых приложениях константы(в экшнах например)
нельзя ли вместо них юзать es6 символы, например
Ivan Kurnosov
@zerkms
Jun 23 2015 09:02
Символ нужно куда-то присвоить всё равно
vogrelord
@vogrelord
Jun 23 2015 09:12
вообще в примитивном случае можно строки юзать, но константы проще посчитать потом, и есть надежда, что всякие линтеры и IDE будут ругаться, когда ты ошибешься в названии константы.
vogrelord
@vogrelord
Jun 23 2015 09:46
еще очень просто сделать случайно две одинаковые строки и не заметить, а объект, в котором перечислены константы как-то проверяется все-же на уникальность ключей.
Nikita Gusakov
@nkt
Jun 23 2015 10:21
@altmind можно. Посмотри на alt, правда они от этого отказались. Я думаю основная причина в том, что константы нужны для восстановления состояния, а символы для этого не совсем подходят. Но это только догадка
Alexey Migutsky
@mr-mig
Jun 23 2015 12:39
Пацаны, что там из изоморфных флуксов сейчас модно?
Illia Seheda
@ALF-er
Jun 23 2015 12:40
redux =)
Alexey Migutsky
@mr-mig
Jun 23 2015 12:41
мне не ннравится, еще варианты?
Illia Seheda
@ALF-er
Jun 23 2015 12:41
ишь балованый какой
ну флюммокс
Alexey Migutsky
@mr-mig
Jun 23 2015 12:42
флюммокс сдох
ну или сдохнет - не вариант
Illia Seheda
@ALF-er
Jun 23 2015 12:48
Поздравляю, ты пишешь свой флюкс =)
Alexey Migutsky
@mr-mig
Jun 23 2015 12:54
не, я лючше какой-нить cerebral поковыряю для сервера
Illia Seheda
@ALF-er
Jun 23 2015 13:02
Andrew Gurinovich
@altmind
Jun 23 2015 13:20
            <Router history={new HashHistory} >
                <Route name='page' path='/' components={{header: MovementHeader, footer: Footer}} component={BuyerPage}>
                    <Route name='movement' path=':movementId' component={Movement} />
                </Route>
            </Router>
один роут может иметь и components и component?
пытаюсь сделать некое подобие layouts. чтобы можно было в одном <BuyerPage> заменять внутренние блоки header и footer
вроде бы не работает :(
(react-router)
Nikita Gusakov
@nkt
Jun 23 2015 19:52
а давайте таки тут подробно обсудим использование реакта без флюкса? Просто контейнеры с логикой, иммутабельные компоненты (без state, все через props) и event-emitter для глобальных событий, влияющих сразу на кучу компонентов. Какие могут быть пробемы?
Alexey Raspopov
@alexeyraspopov
Jun 23 2015 20:19
проблема может быть только одна: в итоге ты придешь к идее флакса
Roman Pominov
@rpominov
Jun 23 2015 20:21
@nkt не удобно всё-всё через пропсы вниз спускать
или я не так понял... ты имел в виду что весь стейт передается самому верхнему компоненту в дереве, и спускается вниз через пропсы, или что?
Alexey Volkov
@rosko
Jun 23 2015 20:34
@rpominov еще можно через контекст спускать, но вообще я очень согласен с @alexeyraspopov - в итоге будет свой флакс. Убедился в этом на практике еще год назад.
Illia Seheda
@ALF-er
Jun 23 2015 20:42
накидываю минус: отсутсвие концепции "только экшины могут поменять стейт приложения" у тебя возникает вакханалия когда у тебя баг ты совершенно не можешь быть уверен какая часть кода неправильно поменяла конкретную часть состояния приложения.
+ сложно сделать "undo" или если обобщить: сложно сделать "проиграть всю историю изменений состояния приложения". Например, с целью понять "как же этот юзер добился такого бага"
Roman Pominov
@rpominov
Jun 23 2015 20:46
да вообще странное желание "не использовать флакс"
а описание того что делать вместо флакса очень расплывчатое, его можно кучей способов интерпретировать
хотя и флакс люди кучей способов интерпретируют)
диспатчат экшены из сторов etc)
Illia Seheda
@ALF-er
Jun 23 2015 20:49
оно довольно часто встречается. Людей отталкивает недальновидное "та ну чтоб вот это мне изменить одну фигню мне надо создать тип экшина, придумать ему параметры, возможно сделать для него экшнкреатор, написать обработку в сторах"
Alexey Raspopov
@alexeyraspopov
Jun 23 2015 20:51
поверьте, с флаксом больше мороки возникает не когда нужно что-то добавить, а когда нужно что-то удалить
Андрей Листочкин (Andrey Listochkin)
@listochkin
Jun 23 2015 20:52

ну есть еще такой вариант:

  1. у тебя дерево компонентов, но внутренние компоненты не статически зашиты во внешних, а передаются через children
  2. получаешь иерархию, привязанную к плоской модели через props. Обработчики событий сделаны также через props

Хоп, и у тебя MVVM на Реакте.

Illia Seheda
@ALF-er
Jun 23 2015 20:52
хммм... но ведь "ломать - не сторить" =) Ващет, вроде ещё ничего не удалял "из флакса". Ану накинь пример на вентилятор
Alexey Raspopov
@alexeyraspopov
Jun 23 2015 20:53
менял стратегию авторизации, нужно было выбросить пару констант, часть апи, экшн криейтор и два метода из стора (благо, одного)
может это я лох, спорить не буду
Illia Seheda
@ALF-er
Jun 23 2015 20:55
хмм... я бы грохнул константу - дальше посмотрел где матерится и грохнул там =)
Alexey Raspopov
@alexeyraspopov
Jun 23 2015 20:55

но вот что действительно меня озадачило недавно.

предположим некоторые данные хранятся в сторе (например айди выбранных итемов). По загрузке приложения нужно воспользоваться апишкой чтобы выгрузить списки если в localStorage есть какие-то данные

значит нужно заюзать экшн криейторы
причем, сцуко, последовательно
и вот тут пришлось переписать все криейторы на чистые функции, которые возвращают промис с тем самым экшном что они отправили
но выглядит оно пока "так себе"
Illia Seheda
@ALF-er
Jun 23 2015 20:58
у меня есть примерно такая же фигня. Только я себе запилил один экшн APP_INITIETED =)
Alexey Raspopov
@alexeyraspopov
Jun 23 2015 20:58
хитрый :)
Alexey Raspopov
@alexeyraspopov
Jun 23 2015 21:04
кстати, спасибо, я все думал куда мне спрятать эту последовательность экшнов
а то как раковая опухоль была
@mr-mig ^ ^ ^
Alexey Raspopov
@alexeyraspopov
Jun 23 2015 21:09
cycle.js?)
Illia Seheda
@ALF-er
Jun 23 2015 21:14
хитрый ход. Посмотрим, что они на этот раз посчитают незначительным и уберут =)
Ivan Kurnosov
@zerkms
Jun 23 2015 22:08
@alexeyraspopov cyclejs со вкусом реакта )
Nikita Gusakov
@nkt
Jun 23 2015 23:13
Просто я почему об этом стал задумываться. О какой изоморфности можно говорить, когда фактически вся логика лежит внутри view? У нас компонент реагирует на обновление стора и дергает другой экшн. Фактически view и так в роли контроллера. Так и убрать нафиг эту прослойку.
Illia Seheda
@ALF-er
Jun 23 2015 23:22
бррр... чо?
Vladimir Kurchatkin
@vkurchatkin
Jun 23 2015 23:24
Компонент != view
Illia Seheda
@ALF-er
Jun 23 2015 23:25
почему у тебя логика во вью? =/ это не тру
Но тут же снова мой любимый ночной вопрос (на который я пока получил самый невменяемый ответ эва): что именно ты называешь логикой (конкретно какие строчки кода, не надо википедию, плз)