@react_js

Страница 533 из 5115
Roman
13.10.2016
09:08:30
никаких location (params, history, еще какой нибудь хуйни) он не пробрасывает. точка.

Vladimir
13.10.2016
09:09:01
got it

ты был прав

как ты пробрасываешь компонент в <Route component={} />?

Google
Vladimir
13.10.2016
09:17:05
друзья, а что вы используете, если надо матчить юзер агент? например, чтобы в API было isAndroid

Roman
13.10.2016
09:18:14
как ты пробрасываешь компонент в <Route component={} />?
стандартно import MyComponent from ... <Route component={MyComponent}

Vladimir
13.10.2016
09:18:54
кхм

я описал, у меня есть

Roman
13.10.2016
09:20:47
уверен, потому что проптайпсы можно вообще по всему проекту выпилить и все будет работать как и раньше

то что делает для прода - transform-react-remove-prop-types например

Исмаил
13.10.2016
09:33:10
Скажите, пожалуйста, насколько трудно переехать на server side rendering в плане переработки кода?

Evjeni
13.10.2016
09:38:40
гайс, есть у кого тутор фейсбука в pdf?

Vladimir
13.10.2016
09:42:04
Скажите, пожалуйста, насколько трудно переехать на server side rendering в плане переработки кода?
Нетрудно. Надо проследить, что все методы, которые работают с домом были в componentDidMount, а не в componentWillMount.

Ну и тому подобных фишек есть пригоршня.

Исмаил
13.10.2016
09:45:04
Ну и тому подобных фишек есть пригоршня.
Где можно почитать про пригоршню?

Google
Vladimir
13.10.2016
09:47:10
Да нигде. Если юзаешь react router, то его доку посмотри. А так надо просто помнить, что на сервере нет window, document и т.д.

Ну и знать какие лайфцайкл методы когда исполняются

Исмаил
13.10.2016
09:48:57
Понял, спасибо. c livecycle знаком, работа с dom уже перенесена в DidMount

Vladimir
13.10.2016
10:09:11
ну и использовать replace из rr, вместо const replace = url => window.location = url

но это само собой

Vladimir
13.10.2016
10:17:38
есть еще важный поинт, тоже очевидный - нельзя просто так юзать глобальные переменные в асинхронных методах

если используете редакс, то нужно юзать thunk и передавать экстра-параметром всякий контекст. например, history, язык, авторизованного пользователя и т.д.

Исмаил
13.10.2016
10:25:28
использую thunk, action-creators есть асинхронные, которые вызываются из приложения, и простые для отправки редьюсеру. В асинхронных работаю с данными и передаю их как параметр простому криэйтору

об этом речь?

Denis
13.10.2016
11:22:38
Самое сложное будет решить как собирать данные до SSR

Если сейчас данные собираются в одном месте - то легко

Скажите, пожалуйста, насколько трудно переехать на server side rendering в плане переработки кода?
Telegram заглючил :) Самое сложное будет решить как собирать данные до SSR. Если сейчас данные собираются в одном месте или используется Relay, то всё просто. Если сбор данных разбросан по компонентам, то придётся немного потрудиться. Но тоже всё просто.)

Владимир
13.10.2016
11:27:48
Самое сложное будет решить как собирать данные до SSR
ну если брать ситуацию когда запросы разбросаны по компонентам, как бы ты ее решал ? На каком этапе понимал что нужно начать выполнение всех промисов

Dmitriy
13.10.2016
11:47:23
парни, если я лямбду передаю вот так render() { const { myProp } = this.props; return <input onChange={() -> doSomething(myProp)} />; }

может быть такое, что она не пересоздается каждый раз при вызове render

Grigory
13.10.2016
11:48:14
может быть такое, что она не пересоздается каждый раз при вызове render
https://medium.com/@esamatti/react-js-pure-render-performance-anti-pattern-fb88c101332f#.af1hhonmv

Dmitriy
13.10.2016
11:48:40
и во время события onChange срабатывает старая функция, замкнутая на старый myProp ?

судя по статье, раз функция пересоздается каждый раз, мы должны в onChange иметь всегда свежую функцию, замкнутую на свежий myProp

Google
Dmitriy
13.10.2016
11:56:00
но этого почему-то не происходит

Malgalad
13.10.2016
11:56:56
зависит от того, что такое -> и что происходит в компоненте в целом

может у тебя shouldComponentUpdate игнорит чейнджи myProp ¯\_(ツ)_/¯

Dmitriy
13.10.2016
12:00:18
не игнорит, render происходит с обновленным myProp

и уже после происходит onChange со старым myProp

Malgalad
13.10.2016
12:03:10
остаётся вопрос что такое ->. и почему onChange у тебя не смотрит на event.target.value и вообще на аргументы.

Dmitriy
13.10.2016
12:03:34
это опечатка =>

Dmitry
13.10.2016
12:07:04
А перед вызовом функции myProp правильный?

Внутри обработчика уже

Dmitriy
13.10.2016
12:08:23
внутри обработчика старый myProp

Malgalad
13.10.2016
12:10:36
http://www.reactiongifs.com/r/2013/06/I-dont-believe-you.gif

Синтаксис правильный, либо есть какой-то side effect вне предоставленного участка кода, либо ошибка в логике

Andrew
13.10.2016
13:37:45
Добрый всем день! Коллеги, есть пара вопросов. (Речь о React Native в связке с Redux.) 1. В какой точке программы вы начинаете выполнять идентификацию устройства, запрос данных с сервера (пока на экране "Loading") и тп? Варианты навскидку такие: а) Сразу, как только сконфигурировали store и получили dispatch? Типа, store.dispatch(idDeviceAndLoadData()) - я склонился пока что к этому варианту - это ок? можно лучше?). б) В момент, когда перешли на первую страницу (код в componentDidMount() соответствующей сцены) в) Еще где-то.. 2. Второй вопрос задам отдельно. Чуть ниже.

Второй вопрос такой: Как вы привязываете логику приложения к срабатыванию какого-то действия (action, FSA)? Вот, к примеру, приложение получило от сервера пакет элементов. Понятно, что есть редьюсер, который эти элементы сложит куда-то; может, даже взведёт какой-то флаг, что, мол, данные получены. И какой-то компонент даже отрисует их. Но вот живет в приложении какая-то другая сущность, которая, должна сделать какую-то трансформацию над элементами и принять решение, надо ли еще совершать какие-то действия (подгрузить новую порцию, обновить флаги в профиле пользователя и тп). Так вот, разбор элементов по ключам для обновления кеша - эта логика легко ложится на редьюсер. А вот вызов последующего действия, очевидно, должен лежать, скажем, либо в асинх-экшенах, либо в компонентах. НО.. Получается, то логика обработки данных приложения размазывается. Есть стройное приложение ToDo - там вся логика - внутри редьюсеров. А в ситуации, что я описал, оказывается, требуется некая мета-логика, и храниться она может где угодно. Наверняка, вы сталкивались с описанной мной проблемой. Как вы поступали в таких случаях?

Eugeniy
13.10.2016
13:57:20
в мидлварах может?

Andrew
13.10.2016
14:00:11
в мидлварах может?
Евгений, это ответ на один из моих вопросов? Второй, насколько я понимаю?

Eugeniy
13.10.2016
14:00:59
Да, ну в мидлваре ты ведь можешь посмотреть какой экшен произошел - получить данные - посмотреть и уже решить - отправить какой-то ещё запрос либо дальше отправить данные

Eugeniy
13.10.2016
14:04:26
можно) ну если есть в этом необходимость - то да. Но я не работал с RN поэтому как там устроено не знаю

Andrew
13.10.2016
14:11:08
Второй вопрос к RN ортогонален. Первый порос по RN.

Google
Andrew
13.10.2016
14:11:36
Кстати, есть ли отдельная группа по React Native, кто подскажет?

Eugeniy
13.10.2016
14:11:55
https://telegram.me/reactnative_ru

Maxim
13.10.2016
14:20:08
Вопрос по react+recompose: Как, имея в withState(value, updateValue, 0,) обновлять value (например, в withPropsOnChange) непрерывно по таймеру setInterval(()=>updateValue(value+1), 500)

Andrew
13.10.2016
14:29:58
Vladislav
13.10.2016
15:11:38
Всем привет! Вопрос: что использовать для форматирования телефонного номера: +7 (123) 123-45-67? Любой телефонный номер любой страны (ну или ряда стран).

Evgeny
13.10.2016
15:12:01
react-maskedinput

Vladislav
13.10.2016
15:13:54
react-maskedinput
спс, но вопрос про форматирование: когда пользователь ввел +7123…, показать отформатированный

Evgeny
13.10.2016
15:14:26
???

Eugeniy
13.10.2016
15:14:52
ну он вводит и сразу форматируется

в чем проблема?

Evgeny
13.10.2016
15:14:57
Ну

Alexander
13.10.2016
15:15:01
Форматированный вывод

Evgeny
13.10.2016
15:15:01
react-maskedinput

Vladislav
13.10.2016
15:15:56
походу объяснять не умею, щас примеры

например, если брать рос номер и укр номер, то есть разница в форматировании: +7 (916) … и +380 (50) …

Evgeny
13.10.2016
15:19:14
REACT

MASKED

INPUT

Eugeniy
13.10.2016
15:20:35
http://insin.github.io/react-maskedinput/

Vladislav
13.10.2016
15:20:36
мне спарсить надо и отформатировать, это не маска, я прав?

Google
Alexander
13.10.2016
15:21:33
Ну блин, берешь и делаешь. В чем проблема-то? Угадываешь какой страны номер и соотвественно форматируешь

11 знаков и начинается с 7 — Россия, взял нужный формат и т.д. Что тебе еще надо?

Такси в подарок!)
13.10.2016
15:29:15
Короче я так и не разобрался, где преобразовывать данные от сервера. Допустим, ситуация: есть кривой API, из него приходит ответ в формате { ageG0: 1, ageG1: 123, ageG2: 21 } и так до ageG6. Мне надо это заюзать в highcharts, а для этого надо всё преобразовать в простой массив Подскажите, пожалуйста, кто бы где сделал это преобразование Я гуглил, спрашивал, есть такие подходы: 1) если не нужен исходный ответ, то в middleware, тогда в store будет храниться уже преобразованный вид 2) в mapStateToProps в контейнере, то есть перед рассылкой пропсов по компонентам 3) в функции-селекторе – похоже на второй вариант, но более универсально

Evgeny
13.10.2016
15:30:14
В экшене сделай и в стор положи что нужно

Такси в подарок!)
13.10.2016
15:31:12
А если там сто строк перехерачивания данных? Придется как-то разбивать на модули

Сергей
13.10.2016
15:32:06
Вообще в экшене лучший вариант

либо вынести само перехерачивание в какой-нибудь utils/convert.js, если надо реюзать его

Такси в подарок!)
13.10.2016
15:32:44
Тут проблема, что они не реюзабельные, да. Под каждый эндпоинт свой набор костылей

Сергей
13.10.2016
15:33:17
ну тогда в экшене

и всё

Evgeny
13.10.2016
15:35:37
Тоже так делаю

У меня есть фильтры, много фильтров

Для сервера нужно одно, у меня для стейта другое

Например

mkadDistance: { min, max } в стейте, чтобы со слайдером норм работать

mkadDistance=min..max для сервера

У меня есть /helpers.js где есть функция mapParams

Страница 533 из 5115