
Егор
29.07.2016
09:53:48

Alexander
29.07.2016
10:30:37
Котаны, подскажите правильное решение кейса по редаксу:
Есть контейнер который берёт из state данные B и С, при этом получает их традиционно делая thunk dispatch в componentDidMount, но для этого нужны данные из A, при этом А асинхронный, диспатчится совсем в другом месте и на момент монтирования контейнера может ещё не получить ответа
Если без абстракций, то A это stream с данными пользователя который живёт глобально и обновляет state запуская dispatch на стороне по мере обновления и поступления данных
А B и C это уже локальные данные отдельных контейнеров, которым нужен id пользователя из A, но на момент подключения компонента этих данных в сторе может ещё не быть
Что можно сделать, кроме как не рендерить контейнеры пока не произойдёт resolve зависимых данных A?

Alxander
29.07.2016
10:35:02

Алексей
29.07.2016
10:35:42
Не рендерить, наверное, самый простой вариант и самый логичный

Google

Dmitry
29.07.2016
10:35:49
Подписаться на экшен A и после него диспатчить все нужное для твоего контейнера, а в самом контейнере из коннекта получать

Alxander
29.07.2016
10:35:56
Возможно стоит немного допилить бекенд и сделать так, чтобы минимальные данные для рендеринга собирались там и отдавались в одном запросе.

Alexey
29.07.2016
10:44:25
Ребят, подскажите почему не срабатывает event. Когда когда статически все ок, а при динамическом добавлении не отрабатывает.

Alxander
29.07.2016
10:45:34
А что за @state нотация?

Ярослав
29.07.2016
10:45:53
кофейник

Lupsick
29.07.2016
10:46:16
че пишет?

Alexey
29.07.2016
10:46:24
ничего

Lupsick
29.07.2016
10:46:49
onChange={() => console.log(‘click’)} попробуй

Ярослав
29.07.2016
10:46:50
там скорее всего не сбинжена функция

Alexey
29.07.2016
10:46:53
ошибок нету, event вообще не отрабатывает

Lupsick
29.07.2016
10:47:13
скорее всего действительно надо делать .bind(this)

Vitaly
29.07.2016
10:48:10
@state.questions.map (result) =>


Denis
29.07.2016
10:48:44
? В группе есть традиция - представляться при входе:
▫️Какой у вас проект или где работаете?
▫️В чём вы специалист?
▫️Чем можете быть интересны или полезны сообществу?
▫️Чем интересно сообщество вам?
▫️Откуда вы?
▫️Как узнали про группу?
В сообщении нужно указать тэг #whois
? Правила чата:
? Публикация вакансий запрещена
? Реклама запрещена
? Политика запрещена
За несоблюдение правил - одно предупреждение, далее следует бан.
Вакансии и запросы на поиск работы по направлению JavaScript, React.js, React Native, Node.js и пр. публикуем в группе @javascript_jobs. Формат любой: full-time, part-time, remote и разовые подработки. Также обмениваемся инсайдами и аналитикой по рынку труда.
Здесь общаемся на темы, посвященные React.js, Redux, Relay, ES6, saga, оптимизации, экосистеме, а также обмениваемся советами и новостями, задаём вопросы и обсуждаем идеи вокруг этого.
Параллельно с этой группой развиваются:
?@reactnative_ru - общаемся на темы, посвященные React Native.
?@nodejs_ru - общаемся на темы, посвященные Node.js, микросервисам, немного DevOps, профайлингу и оптимизации, npm-экосистеме, обмениваемся советами и новостями, задаём вопросы и обсуждаем идеи вокруг этого.
? Возможно, вам также будут интересны группы: @angular_js, @angular2, @ios_ru, @android_ru, @mobile_jobs, @devops_ru, @devops_jobs. Приятного общения!

Google

Alexander
29.07.2016
10:49:10
А чем вариант с «не рендерить» не нравится?
Да вобщем-то так и сделал, для чего-то вроде информации пользователя в ожидании логина это самое логичное решение, но меня больше волновала такая проблема вообще, что если будет более длинная цепочка зависимостей более специфичных данных

Andrey
29.07.2016
10:49:40
серьезно? традиция?

Brs
29.07.2016
10:49:46
наверное стоит смотреть в сторону саг тогда

Alexander
29.07.2016
10:50:40

Nikolay
29.07.2016
10:50:58
лучше бота для этой цели запилить) а то сложно как-то представлятся) почти как проставляться)

Dmitry
29.07.2016
10:51:06

Vladimir
29.07.2016
10:51:29
const fetchUsers = memoize(get('/users'))
function actionCreator1(){
return dispatch=>
fetchUsers().then(dispatch('USER_LOADED'))
}
function actionCreator2(){
return dispatch=>
fetchUsers()
.then(u=>fetchPosts())
.then(()=>dispatch('POSTS_LOADED'))
}

Alexander
29.07.2016
10:52:13
Понятненько, спасибо, покурю саги снова

Nikolay
29.07.2016
10:52:31
#whois - я fullstack. реактом занялся недавно. сейчас на redux пилю конструктор графиков. а так еще python/go

Alexander
29.07.2016
10:52:36

Vladimir
29.07.2016
10:52:50
где дублируются?

Alexander
29.07.2016
10:53:38
где дублируются?
Ну это мне придётся в любом actionCreator’e зависимом делать такой финт ушами получается
Будет переполучение данных пользователя каждый раз, это только если сделать какое-то кеширование промиса и не делать каждый раз запрос

coda
29.07.2016
11:18:40
well you're not even a programmer
you didn't read your sicp

Alexey
29.07.2016
11:19:46
Надо почитать документацию кофе

Vitaly
29.07.2016
11:24:16
Вчера дописал абстракцию для простого взаимодействия с api, с CRUD и расширениями https://gist.github.com/Bitaru/7427fb08c2c4bd4899efaf5a1aba4513
как вы думаете стоит ли развивать эту тему, оптимизировать делать библиотеку?

Дмитрий
29.07.2016
11:32:52
Ух ты, живой coffeScript!

Google

Дмитрий
29.07.2016
11:33:05
Я думал вымерли все

Alexey
29.07.2016
11:42:13
Неужели на кофеСкрипте никто не пишет)

Дмитрий
29.07.2016
12:14:44
И да, мне реально интересно было увидеть живого человека, который сейчас пишет на coffee)

Andrey
29.07.2016
12:17:41
вот, Alexey живой представитель, если не ошибаюсь)

Vladimir
29.07.2016
12:25:55

Алексей
29.07.2016
12:33:31

Vladimir
29.07.2016
12:34:15
в каком смысле?

Алексей
29.07.2016
12:34:39
https://github.com/ngonzalvez/rest-facade/issues/6

Mikhail
29.07.2016
12:49:24
Кто нить сталкивался? Использую css-modules, composes в них работает только c относительным путём. Есть возможность сделать абсолютный root, чтобы всегда в root искал файлы?

Vladimir
29.07.2016
12:55:36

Mikhail
29.07.2016
12:56:45
process.cwd() + {dirname}

Vladimir
29.07.2016
12:57:27
https://github.com/ngonzalvez/rest-facade/issues/6
> You can solve this problem by specifing a naming convention when creating the Rest Client. The naming convention can be any of snakeCase, camelCase, pascalCase, paramCase, or any other implemented by the change-case library.
в документации

Alex
29.07.2016
12:57:57

Алексей
29.07.2016
12:58:00

Vladimir
29.07.2016
12:58:13
и потом в гиттере спроси

Mikhail
29.07.2016
12:58:58
видиом гиттер, все уже возможные доки посмотрел и css-loader и modules

Admin
ERROR: S client not available

Google

Mikhail
29.07.2016
12:59:21
для webpack resolve.root и alias тоже ни в какую не помогают

Дмитрий
29.07.2016
12:59:49
ЭЭэ

Mikhail
29.07.2016
13:00:06
\node_modules\postcss\lib\lazy-result.js:290
throw error;
^
Error: ENOENT: no such file or directory,
Или и не в вебпаке вовсе дело...

Дмитрий
29.07.2016
13:00:07
path(__dirname)

Alex
29.07.2016
13:01:13
человебумкаксмартопмани?

Дмитрий
29.07.2016
13:03:38
И кстати это не случайный набор смайликов, а последовательный?

Alex
29.07.2016
13:06:22
человебумкаксмартопмани?

Roman
29.07.2016
13:07:31
Пацаны, ебать, чё за флуд

Дмитрий
29.07.2016
13:10:26

Alex
29.07.2016
13:12:41
Я бы о такой ассоциации не подумал бы

Play
29.07.2016
13:17:11
Ошибок нет, а картинка не подгружается. Почему?
const movieData = {
title: 'The Usial Suspects',
img: 'http://i.imgur.com/lc15V.jpg',
year: '1995',
}
Вызываю:
`
<Image style={styles.thumbnail} sourse={{uri: movieData.img}} />

Leonid
29.07.2016
13:21:33

Play
29.07.2016
13:22:09

Vladimir
29.07.2016
13:22:40
что такое Image вообще?

Leonid
29.07.2016
13:23:12

Play
29.07.2016
13:23:29

Leonid
29.07.2016
13:23:51
:D

Google

Play
29.07.2016
13:29:37
Если подключаю не из базы, то картинка есть
<Image style={styles.thumbnail} source={{uri: 'https://facebook.github.io/react/img/logo_og.png'}} />

Leonid
29.07.2016
13:31:11

Alex
29.07.2016
13:34:55
Отобрази картинку текстом
Т.е ссылку на нее и убедись что ссылка нормальная

Play
29.07.2016
13:44:12

Alex
29.07.2016
13:44:37
вместо <img src={url} /> просто {url}
может бэкенд возвращает не то что ты ддумаешь

Play
29.07.2016
13:45:37