
ed
07.09.2017
15:49:06
Напиши формат как хранишь данные которые тебе надо загрузить и отобразить

Anton
07.09.2017
15:50:48
то есть типа у тебя в одном окне и list view и detail view
например, список пользователей и детали конкретного пользователя

Google

Anton
07.09.2017
15:51:42
и когда переходишь от одного пользователя к другому, компонент не анмаунтится

ed
07.09.2017
15:52:59
Верно

Sergey
07.09.2017
15:53:00
Ну хорошо, если у тебя не анмаунтится ничего, тогда как тебя поможет cWM?

ed
07.09.2017
15:54:35
Хорошо вот ты открыл сразу страницу первой сущности у тебя инит фетч тру и показывается лоадер
Оно помогает в первое открытие и если был анмаунт
Если теперь ты откроешь вторую сущность у тебя там фетч фолс на момент первого рендера
И потом после первого рендера в дидмаунт ты пойдешь за данными и поставишь тру
Но рендер уже сработает

Сергей
07.09.2017
15:57:08
Бля
Пиши в одном сообщении

ed
07.09.2017
15:57:18
Я с телефона)
Ок

Google

Sergey
07.09.2017
15:57:49
Если так пошло, то "Бля" и "Пиши в одном сообщении" можно тоже в одном сообщении)

Сергей
07.09.2017
15:58:38

ed
07.09.2017
15:58:51
Короче твоя задача сделать так чтобы когда ты уже один раз открыл компонент и загрузил данные и произошел анмаунт на второе открытие но уже другой сущности там был сразу фетч тру
Иначе ты покажешь или андефинед или прошлую сущность
Тут все сильно завязано на структуру стора
Если нужны подробности - приват отвечу через час примерно


Anton
07.09.2017
16:59:36
нет
а как тогда люди пишут нормальный код с async/await? я просто вижу два варианта: использовать try/catch на каждый возможный promise rejection, либо заворачивать всё в try/catch:
первый вариант:
const load = id => async (dispatch, getState) => {
let response
try {
response = await fetch(...)
} catch (err) {
// чё-то делать с ошибкой
}
let data
try {
data = await response.json()
} catch (err) {
// ...
}
// ...
}
второй вариант:
const _load = id => async (dispatch, getState) => {
const response = await fetch(...)
const data = await response.json()
// ...
}
const load = async id => {
try {
_load(id)
} catch (err) {
// ...
}
}

Сергей
07.09.2017
17:00:44
Ибо иногда можно обработать ошибку и работать дальше

Anton
07.09.2017
17:00:56
а декоратор, собственно, хотел прикрутить, чтобы он try/catch'ил ошибки заворачиваемой функции

kana
07.09.2017
17:08:12
ну, обрабатывать ошибку можно по разному же, как эту логику в декоратор?

Maxim
07.09.2017
17:11:48
кто-то пользовался material-ui и react toolbox, что лучше будет?

Сергей
07.09.2017
17:13:25

Maxim
07.09.2017
17:13:43
там стили уже не инлайновые?

Denis
07.09.2017
17:14:08
неа

Maxim
07.09.2017
17:14:52
это хорошо

Nikita
07.09.2017
17:31:44
Ребят дайте плиз чат по webpack,хочу в какашках поковыряться

Ҫѐҏӗѫӑ
07.09.2017
17:32:48
тут тоже с этим норм

ed
07.09.2017
17:33:15
По ошибке у тебя должна быть обертка над работой с сервером там и обрабатывай, делай однотипные еррор с кодом и сделай перехват в миддлвари при необходимости, например если слетела авторизация

Ilya
07.09.2017
19:30:56
Подскажите а зачем так задают роуты в видео объекта(https://reacttraining.com/react-router/web/example/route-config) вместо того чтобы в компонентах задавать древовидно?

ed
07.09.2017
19:36:41
Наконец то кто-то додумался до того что я делал года два назад)))

Google

ed
07.09.2017
19:39:26
Не знаю как тут, но вообще работая с объектом можно его потом использовать, например для проверки прав, отрисовки навигации, включения и отключения роутов и пр. Для создания компонентов которым не надо указывать path, а просто имя роута и др.

Сергей
07.09.2017
19:40:09

Nikita
07.09.2017
19:48:14

from
07.09.2017
20:47:59
ребят
как лучше подойти к задаче — рендерится элемент, хочу знать с какой шириной (и высотой) он отрендерится
естественно я хочу минимизировать кол-во вызовов функций для расчёта размеров

Andrey
07.09.2017
20:51:54

from
07.09.2017
20:52:06
кого?

Andrey
07.09.2017
20:52:20
Иннерхеигхт

Winni
07.09.2017
20:52:22
Почему бы тебе не задавать ему параметры? Или если там картинка, то узнай размеры картинки, прежде чем вставлять ее

from
07.09.2017
20:52:23
постфактум это после рендера что ли? :)

Andrey
07.09.2017
20:52:39

from
07.09.2017
20:52:45

Andrey
07.09.2017
20:53:22

from
07.09.2017
20:53:51
короче
понятно можно отрендерить, получить ref, получить дом ноду, на ноду повесить MutationObserver.... но что если элемент постоянно маунтится/анмаунтится?

Admin
ERROR: S client not available

from
07.09.2017
20:54:14
...собственно в этом случае может быть достаточно на каждый маунт один раз вызывать getBoundingClientRect...
Но что если элемент может часто и маунтиться/анмаунтиться, и просто меняться? (меняется содержание — меняется высота)

Andrey
07.09.2017
20:55:11

Google

from
07.09.2017
20:55:19

Andrey
07.09.2017
20:55:50

from
07.09.2017
20:57:07
https://github.com/iamssen/react-reflow это?....

Andrey
07.09.2017
20:58:02

from
07.09.2017
21:03:23
в курсе, только это вообще не туда
хотя про "ловить paint" из js не особо в курсе
и не думаю, что это полезно для большинства приложений

Nikita
07.09.2017
21:39:34

from
07.09.2017
21:40:37
бред какой-то, приведи пример когда нужно детектить рефлоу не средставми resize/mutation observer
знать о них — да, нужно
Как раз для того, чтобы не было необходимости писать хаки с детектом перерисовок на клиенте

Andrey
07.09.2017
22:18:29

from
07.09.2017
23:52:41

Ilya
08.09.2017
06:14:33
А чтовы используете для стилей в SSR? webpack-isomorphic-tools? withStyles(isomorphic-style-loader)?
webpack-isomorphic-tools выглядит круче, но конфигурация и как он пашет пока не ясно

Denis
08.09.2017
06:49:26
Yarn релизнулся

Alex
08.09.2017
06:54:06
Ожидается падение сборок, как обычно?


Alex
08.09.2017
06:59:45
Кто-то испытавает трудности с react-router?
мы например с такой проблемой столкнулись:
1. путь может быть /smth или /smth/:id
при этом в пути так же может присутствовать пагинация и дата
Дисклеймеры: вполне возможно я что-то делаю не так. Это все про v4. Простите что не прикладываю пруф-линки на соответствующиеобсуждения и документацию, если будет нужно поищу.
добавить это всё в pathname по нормальному не выйдет. С query-параметрами react-router не работает. В результате пагинация и смена даты не попадает в историю, и как показали наблюдения за пользователями это неожиданно и неудобно.
2. Другая проблема, Дэн Абрамов уверяет, что react-router-redux нужен не всем и не всегда. Но не упоминает кейс с переходами по страницам в экшенах. Без react-router-redux приходится городить переходы в компонентах, что выглядит странно.
3. Далее, react-router-redux by design, и это не собираются менять (якобы путь может по разному трактоваться), не хранит в сторе распаршенные параметры пути, а только pathname, которого не достаточно и приходится городить костыли чтобы нормально с этим работать.
4. Ещё он не предлагает никаких годных решений по восстановлению скрола. У вас есть хорошее решение?
А чтобы навешивать обработчики переходов нужно городить обертку над Route
5. Чтобы получить в layout полный распаршенный путь нужно сделать дважды вложенный роутер и класть layout внутрь роута, а результате в react devtools какое-то месиво и каждый раз нужно потерять несколько секунд чтобы найти глубоко вложенную страницу.
6. похоже react-router-redux не хранит в сторе историю и не позволяет приложить свои данные как это делает нативный history
7. Не позволяет обновить (перерендерить текущую) страницу
Фух.
Резюме: говнище ? .
Думаю пилить поверх него библиотеку которой можно будет пользоваться. По сути просто собрать все костыли вместе и обмазать клеем и завернуть в подарочную упаковку.
Часть проблем решается через использование синглтона history (history.push) поставляемого из одноименной библиотеки поверх которой работает react-router.
В следующий сериях:
— Почему redux-form недостаточно хорош
— Почему fetch недостаточно хорош и сколько проблем решит axios
Вот же он


Emir
08.09.2017
07:06:53
Здравствуйте, ребята. Наткнулся на react native, у меня вопрос, с ним делают только UI, или можно целостное приложение с нуля сделать?

Google

Egor
08.09.2017
07:08:09

Alex
08.09.2017
07:08:46
Но по опыту практикующих некоторые части все равно на Свифте надо написать.