@react_js

Страница 23 из 5115
Vladimir
18.04.2016
09:33:37
test: 'mocha —require babel-register', test: 'tape test.js —require babel-register | tap-spec', test: 'ava —require babel-register',

from here https://github.com/iamstarkov/generator-zen/blob/master/app/test-frameworks.js#L3

pepsi ¯\_(ツ)_/¯
18.04.2016
09:33:51
anoru
18.04.2016
09:35:45
https://github.com/erikras/redux-form/issues/726

Google
anoru
18.04.2016
09:35:49
Вот issue на тему выше

Вадим
18.04.2016
09:37:32
Здесь нет людей, которые пробовали и реакт и ангулар 2? И сделали какие то выводы для себя

Вадим
18.04.2016
09:40:00
Нет, я понимаю, что слова "лучше, хуже" вообще нельзя употреблять в общем смысле

что реакт подходит для одних людей/проектов, а ангулар для других

anoru
18.04.2016
09:45:38
С тем, что ie8 требуется для многих кейсов согласен, но я о том, что не надо впадать в крайности и говорить, что только в России забивают на него

Alexander
18.04.2016
10:04:46
В России просто есть такое особое состояние, называется “западло” :D

anoru
18.04.2016
10:06:10
?

Evgeniy
18.04.2016
10:22:41
Ребят подскажите как организовать последовательность асинхронных запросов на сервер в redux. Изучаю React и redux и возникла проблема что иногда на странице появляются данные из запроса который отправлен раньше но ответ пришёл позже.

Artem
18.04.2016
10:24:26
co(function* () { yield firstAsunc(); yield secondAsync(); })

Google
Artem
18.04.2016
10:25:13
ну или redux-saga

Denis
18.04.2016
10:28:57
А кто уже использует mobx?

Или что-то подобное, что более эффективно работает с большими потоком?

событий/actions

Artem
18.04.2016
10:30:07
я с kefir.js работаю часто, но это немного не то

Антон
18.04.2016
10:31:32
Коллеги, у кого есть опыт написание e2e тестов?

Evgeniy
18.04.2016
10:37:35
Я имею ввиду что есть middleware который обрабатывает запросы но например при переходах по ссылкам в каждом компоненте вызывается подгрузка данных в одну переменную state. И может случится так что при переходе на 3 ссылку сначала появятся данные которые должны а потом те что подгружались по запросу второй ссылки, так как они просто пришли позже

Artem
18.04.2016
10:38:39
тогда проще в middleware организовать очередь запросов, если их порядок важен

или делать их параллельно, а мержить в стейт последовательно

Evgeniy
18.04.2016
10:39:53
Может я просто что то не так делаю но не знаю как объяснить понятным языком

Anton
18.04.2016
10:40:56
можно что то из такого попробовать https://github.com/itsmepetrov/redux-combine-actions

Sergey
18.04.2016
10:40:59
Может я просто что то не так делаю но не знаю как объяснить понятным языком
Да нет, всё понятно: результаты первого запроса используются чтобы сформировать второй, и так далее, поэтому запросы нужно делать последовательно.

Evgeniy
18.04.2016
10:41:18
Да именно

А есть пример с очередью запросов в middleware

Artem
18.04.2016
10:43:09
опять я с ко, но обычно так решаю co (function* (){ const firstResult = yield firstRequest(); //first action const secondResult = yield secondRequest(data:firstRequest.data); })

если есть redux-thunk, а экшны запросы возвращают Promise, то через генераторы это все просто работает

Evgeniy
18.04.2016
10:46:02
Именно

Запросы все возвращают promise использую axios

Artem
18.04.2016
10:46:43
тогда через генераторы попробуй

у тебя в firstResult будет ответ от сервера

Google
Artem
18.04.2016
10:47:07
от первого запроса

ну и так далее

Evgeniy
18.04.2016
10:47:28
Так а если количество запросов не 2 а n

Просто все в массив

И потом вызывать?

Artem
18.04.2016
10:48:01
сек

простыню сейчас покажу, но в ней все так и работает )

co(function* () { yield clearOffers(); yield clearOfferContainers(); yield startSearch(); const offerContainerResponse = yield createOfferContainer({...search.conditions}); var { response: { entities: { offerContainers }, result: offerContainerId } } = offerContainerResponse; let { status: containerStatus } = offerContainers[offerContainerId]; yield setOfferContainerId(offerContainerId); searchStatus = yield getSearchStatus(); let progress = 0; while (containerStatus === 'processing' && searchStatus === SEARCHING ) { const start = new Date().getTime() + 5000; yield getOffers(offerContainerId); const offerContainerResponse = yield getOfferContainer(offerContainerId); const offerContainer = offerContainerResponse.response.entities.offerContainers[offerContainerId]; containerStatus = offerContainer.status; if ( offerContainer.progress !== progress ) { progress = offerContainer.progress; yield setProgrss(progress); } yield sleep(start - new Date().getTime()); searchStatus = yield getSearchStatus(); } searchStatus = yield getSearchStatus(); if ( searchStatus === SEARCHING ) { yield getOffers(offerContainerId); yield searchComplete(); } });

Evgeniy
18.04.2016
10:49:45
Спс буду смотреть

Vladimir
18.04.2016
10:50:37
боже

Artem
18.04.2016
10:53:21
сложные там ответы приходят

+ normalizr отрабатывает, приводит все к виду {entities:[], result: id}

anoru
18.04.2016
10:54:32
@dex157 normalizr вроде как раз для этого придумали, но я не пробовал

Artem
18.04.2016
10:54:58
да, просто, если одна сущность, то ее вот так и приходится вытаскивать из ответа

Evgeniy
18.04.2016
10:55:04
Чёт пока не совсем понял

Artem
18.04.2016
10:56:26
тут асинхронный запрос создает search контейнер, и код заберает ответы пока контейнер со статусом processing

все асинхронно

Yanis
18.04.2016
12:40:34
Влад, а что тебе не нравится?

боже

Алексей
18.04.2016
12:40:55
Заходите болтать голосом https://discord.gg/0fqa3L0XnnNs44A8

Google
Vladimir
18.04.2016
12:40:57
8 строчек чтобы получить глубокое значение из объекта

@urbis мне кажется это mis-usage of destructuring

это не упрощает а делает только сложнее

Alexey
18.04.2016
12:42:07
страшненько смотрится

Vladimir
18.04.2016
12:42:29
const offerContainers = R.path(['response', 'entities', 'offerContainers'], offerContainerResponse); const offerContainerId = R.path(['response', 'result'], offerContainerResponse);

Alexey
18.04.2016
12:42:56
ну или lodash.get

Vladimir
18.04.2016
12:43:39
или .get да

Admin
ERROR: S client not available

Artem
18.04.2016
12:44:00
да я и не спорю, что можно красивее сделать, разрабатываю почти в одиночку, мне так стало привычнее, а подобные вопросы дело вкуса, потому что для одной цели, вытащить данные

Alexey
18.04.2016
12:45:35
ну главное, чтобы ты потом завтра вспомнил, что ты хотел сказать тут )

Vladimir
18.04.2016
12:46:47
ага

Alexey
18.04.2016
12:47:52
Ну и lodash еще защищает от осутствия промежуточных св-в. Не уверен, что в случае с destructuring assignment это будет работать

Artem
18.04.2016
12:48:41
request до этого проверяется, так что в этом плане проверка идет уровнем ниже

Vladimir
18.04.2016
12:52:46
destructuring насколько я помню fail-safe и вернёт undefined если что-то по пути не найдёт

Alexey
18.04.2016
12:55:49
по-моему null или дефолтное значение, если укажешь

Dmitry
18.04.2016
15:14:48
Ребят есть вопрос, ставлю обработчик onClick на кнопку и при клике, в обработчик попадает дочерний элемент. Как можно предотвратить такое поведение?  <button onClick={this.props.clickDialDigit} data-digit="call"><i className="fa fa-phone"/></button>

Alexander
18.04.2016
15:15:49
Не знаю как это в реакте, но вообще это же про делегирование. Чекай в хэндлере на что клик

А не

Вру

Google
Alexander
18.04.2016
15:16:10
Это про event capturing

Aleksandr
18.04.2016
15:16:28
через ref прозще ж button получить, не?

Roman
18.04.2016
15:16:35
это поведение обработчиков по умолчанию, только если вешать отдельный обработчик на дочерний элемент, в который вешать e.stopPropagation(). Вообще не очень понятно, зачем нужно, чтобы на дочерний элемент не вызывалось событие. Возможно, дочерний элемент не должен быть дочерним у блока, на который вешается обработчик?

то есть им место в одном общем контейнере — кнопке и, получается, иконке

Roman
18.04.2016
15:18:30
<div><button onClick={this.props.clickDialDigit} data-digit="call" /><i className="fa fa-phone"/></div>

вот так то есть

ну или местами поменять иконку и кнопку, смотря как по дизайну

отдельно замечу, что иконочные шрифты вроде бы все, если я не ошибаюсь

anoru
18.04.2016
15:20:15
@dmacompton есть event.target и event.currentTarget

Один ссылается на чилд, который кликнул. Другной на элемент, где обработчик

в данном случае буттон

на lern.javascript.ru хорошо написано по этому поводу

Roman
18.04.2016
15:21:04
ааааа, я понял о чем речь

anoru
18.04.2016
15:21:21
https://learn.javascript.ru/event-bubbling

Roman
18.04.2016
15:21:24
я думал, дело в том, что при клике на дочерний элемент не должен вызываться обработчик по задаче

Dmitry
18.04.2016
15:21:28
Почитаю спасибо. Я по клику достаю дата-атрибут.

Roman
18.04.2016
15:21:30
все правильно, да

Dmitry
18.04.2016
15:21:49
Да не должен. Спасибо всем

anoru
18.04.2016
15:22:19
может и так) 

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