@react_js

Страница 404 из 5115
Evjeni
23.08.2016
07:50:10
пишу коды на css

Anonymous
23.08.2016
08:40:15
Всем привет. Наверное мой вопрос уже много раз поднимался. Но все же. Есть компонента, у нее в componentWillMount и в componentWillReceiveProps код, который смотрит на props.params.userId и стреляет экшен на фетчинг юзера. Потом экшен грузит юзера и он появляется в сторе. Проблема в том, что этот экшен успевает выстрелится много раз. Я понимаю, что здесь 2 проблемы. Первая это то, что не нужно в componentWillReceiveProps делать таих вещей, но где тогда? как контейнер должен отреагировать на то, что в params появился новый юзер и зафетчить его? Вторая это то, что нужно как-то помечать юзера как того, который загружается. Как мне лучше всего быть в этой ситуации? Спасибо

hlomzik
23.08.2016
08:45:21
debounce?

Google
Lupsick
23.08.2016
08:47:54
сравнивай новые и старые параметры в componentWillReceiveProps

Vladimir
23.08.2016
08:51:23
ну да, можно проверить новый и старый айди юзера, и фетчить только если они разные

Anton
23.08.2016
08:56:45
Кстати, насчёт хантинга, у меня тут в дельта окрестности очень агрессивно пылесосит Атлассиан. Задело кого?

Andrey
23.08.2016
08:57:22
в дельта?

Anton
23.08.2016
09:03:02
в дельта?
Δ-окрестность

Anonymous
23.08.2016
09:05:11
почему он у тебя выстреливается много раз?
Получается, что там паралельно меняется состояние стора ( подгружается другая инфа асинхронно) , контейнер подписан на это состояние и у него выстреливает componentWillReceiveProps

А код в componentWillReceiveProps ничего не знает про то, ресурс загружен или нет. И повторно дергает экшен

Brs
23.08.2016
09:05:53
у меня колллега-джавист в атлассиан в прошлом году уехал

но он вроде сам инициативу проявил

Anonymous
23.08.2016
09:07:02
Да, но что я там могу проверить? Я там вижу только props.params.userId

Lupsick
23.08.2016
09:07:39
Google
Anonymous
23.08.2016
09:08:16
но компонента ничего не знает про юзера. Она не подписана на него.

Lupsick
23.08.2016
09:08:44
я не понимаю короче

Anonymous
23.08.2016
09:08:44
получается, мне нужно чтобы компонента или проверяла, что user существует в сторе и не вызывала экшен или помечать юзера как loading и чтобы экшен не выстреливал загрузку внутри себя

Lupsick
23.08.2016
09:09:01
ну хоть так

Anonymous
23.08.2016
09:09:34
У меня есть компонента AppLayout. она смотрит, что params.userId от раутера получена и триггерит загрузку юзера.

Это корневой лэйаут

Я бы с удовольствием засунул бы загрузку юзера еще куда-нибудь выше

Lupsick
23.08.2016
09:10:29
redial и засунешь в роут
https://github.com/ifokeev/ticket-api/blob/master/client/src/components/pages/TicketPage.jsx#L28

Anonymous
23.08.2016
09:11:11
Воу! https://github.com/markdalgleish/redial . Это то что нужно

Спасибо огромное :)

Lupsick
23.08.2016
09:11:24
смотри код

Anonymous
23.08.2016
09:12:05
Да, вижу. То что мне и нужно. Подгрузить юзера перед тем как все отрендерится.

Спасибо :) !

Alex
23.08.2016
09:36:13
А тут есть активность? Кто как решает такую проблему: Когда рендеринг делается на клиенте, вместе с <div id=«app»></div> нужно отправлять данные для рендеринга. Я это делаю путём прогона их через JSON.stringify и помещения в layout-шаблон в <script>window.app = {data}</script> Вроде ок, но проблема дальше, Когда добавляется рендеринг на сервере, то получается дублирование пересылаемых по каналу данных

Sergey
23.08.2016
09:38:08
O_o

Lupsick
23.08.2016
09:45:31
Alex
23.08.2016
09:51:31
Или например такая проблема: нужно в тексте заменить переносы строки на <br/> но так сделать нельзя и приходится оборачивать в div’ы, что сильно увеличивает размер трафика и захламляет content.split(/\n/).map(line => <div>{line}</div>) может быть есть хитрости как это обойти?

Google
Lupsick
23.08.2016
09:52:49
оно незначительно увеличивает размер трафика

Roman
23.08.2016
09:54:38
вопрос по организации redux-лапши ducks использует кто-нибудь? а если нет, то почему? может какую особую организационную структуру реализовали у себя? https://medium.com/@scbarrus/the-ducks-file-structure-for-redux-d63c41b7035c#.ilcano822 https://github.com/erikras/ducks-modular-redux

Михаил
23.08.2016
09:55:54
ребят, а как правильно анимировать добавление в начало списка? пробую сделать с react-transition-group - работает только если давать элементам списка рандомный key

Alex
23.08.2016
10:04:34
Вторую проблему решил с помощью createElement: React.createElement('div',null, poem.content.split(/\n/).reduce((a, l) => [...a, l, <br/>],[]))

Dmitry
23.08.2016
10:07:36
Вторую проблему решил с помощью createElement: React.createElement('div',null, poem.content.split(/\n/).reduce((a, l) => [...a, l, <br/>],[]))
Ты видел мое сообщение? ) Одной строчкой в css. Если конечно я правильно понял твою задачу

Alex
23.08.2016
10:08:05
нет, посмотрю на телефоне, telegram for mac видимо глючит(

Ҫѐҏӗѫӑ
23.08.2016
10:08:20
Alex
23.08.2016
10:08:25
нет, css-решение не подходит, я знаю о нём

Ilya
23.08.2016
10:08:26
Ҫѐҏӗѫӑ
23.08.2016
10:08:32
Австралия не нужна

Ilya
23.08.2016
10:08:37
версия для мака говно

Alex
23.08.2016
10:08:45
я делаю жёсткую минификацию html

Ҫѐҏӗѫӑ
23.08.2016
10:08:50
но это давно было и не на реакт

Alex
23.08.2016
10:08:55
хорошо)

почему? там json без html

Lupsick
23.08.2016
10:15:04
почему? там json без html
легче ж заюзать сериалайз

Alex
23.08.2016
10:15:36
в каком смысле легче? )

Google
Lupsick
23.08.2016
10:15:48
в каком смысле легче? )
в смысле что в будущем не сломается

Alexander
23.08.2016
10:16:04
друзься, а есть бабел лоадер что бы превращать yaml или json в react компоненты? Вместо jsx. Было бы интересно глянуть как это выглядело бы

Alex
23.08.2016
10:17:47
json в react может БЭМ превращать, но это ещё не выпущено в опенсорс, но будет вот-вот

Alexander
23.08.2016
10:18:54
ну это наверно как-то завязано на всю это бэм методологию. Мне интересно просто что бы вместо XML based был YAML based синтаксис

Alex
23.08.2016
10:20:13
не встречал, но ты можешь написать свой конвертор в React.createEvement, кажется не очень сложная задача если не учитывать разные корнер-кейсы

Alexander
23.08.2016
10:20:40
я понимаю что его можно написать))

Alex
23.08.2016
10:21:32
А это никто проблемой не считает? > Когда добавляется рендеринг на сервере, то получается дублирование пересылаемых по каналу данных получается и в window.INITIAL_STATE добавляются данные и на странице их отображение.

Admin
ERROR: S client not available

Alex
23.08.2016
10:23:54
Да, но я не про повторную загрузку INITIAL_STATE, а про первичную. Думаю не делать передачу INITIAL_STATE если рендеринг делается на сервере

Lupsick
23.08.2016
10:24:20
почитай код который я кинул

Egor
23.08.2016
10:24:21
имеется ввиду, что в html странице, которую отдает сервер есть html с данными и json с ними же

Alex
23.08.2016
10:24:34
да

Lupsick
23.08.2016
10:24:35
я ему это кинул второй ссылкой

Egor
23.08.2016
10:24:43
а если его не передать, то react не сможет подхватить рендеринг

Alex
23.08.2016
10:25:13
воот, значит нужно не делать начальный рендеринг

Egor
23.08.2016
10:25:22
тогда не будет событий

Alex
23.08.2016
10:27:22
точно, может быть попробую патч как-нибудь позднее сделать. Чтобы рендеринг опускался, но события отрабатывали

Lupsick
23.08.2016
10:27:52
какие события?

Google
Egor
23.08.2016
10:28:01
ну там onClick например

Lupsick
23.08.2016
10:28:14
ты в компоненте делаешь онклик при маунте?

Egor
23.08.2016
10:28:22
при рендере

Lupsick
23.08.2016
10:28:34
биндишь онклик или дергаешь онклик?

Egor
23.08.2016
10:30:00
это не важно, мы о другом, что если не вызвать первоначальный рендеринг на клиенте, то события не будут работать, потому что просто ничего не инициализируется, а чтобы вызвать рендеринг и чтобы он соответствовал серверному, то клиент должен получить полный стейт со всеми данными в виде json, и ровно об этом дублировании и идет речь

получается что в html который приходит с сервера содержится отрендеренный html с данными и плюс к этому еще json с теми же данными для первоначального рендеринга на клиенте

Lupsick
23.08.2016
10:34:07
сложна и малопохоже на правду

пусть сережа рассудит

читай проект короче все равно там все это есть

Egor
23.08.2016
10:40:42
В проекте по ссылке ровно такая реализация

Vladimir
23.08.2016
10:57:44
Если не передавать initial state, то реакт перерисует все заново, придется данные перезапрашивать и все такое

На самом деле это дублирование - не такой большой оверхед, особенно если врубить гзип

S
23.08.2016
11:28:24
Вопрос знатокам #Redux, почему если я в connect использую ownProps, то этот компонент всегда будет не pure?

if (pure && !this.doStatePropsDependOnOwnProps) { var haveStatePropsChanged = tryCatch(this.updateStatePropsIfNeeded, this); if (!haveStatePropsChanged) { return; } if (haveStatePropsChanged === errorObject) { this.statePropsPrecalculationError = errorObject.value; } this.haveStatePropsBeenPrecalculated = true; } кусок кода из react-redux

Вопрос скорее идеологический, т.к. видно что это было сделано специально

Alex
23.08.2016
11:42:28
# Подумал как можно решить проблему с дублированием: заменять большие объёмы данных на специальную заглушку, которую должен начать понимать реакт, что-то типа new React.KeepContent() И клиентская перерисовка произойдёт как обычно но представления заглушенных данных не будут перерисованы Но потребуется учесть в коде что может придти заглушка, если перед отрисовкой в render делается какое-то преобразование, например если данные это текст, и в него вставляется br-ки как во втором моём кейсе

Gzip не поможет, если в представлении данные очень отличаются от оных в сыром сериализованном виде

А данных очень много, например статьи/тексты/книги как у меня

S
23.08.2016
11:49:16
Вопрос знатокам #Redux, почему если я в connect использую ownProps, то этот компонент всегда будет не pure?
Проблема решена, надо было использовать такой connect @connect( (_state, ownProps) => (state) => { const comment = state.entities.comments[ownProps.commentId] const user = state.entities.users[comment.user] return { comment, user } }, commentActions )

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