
Demid
20.08.2018
16:51:56
Я немного не об этом, меня просто убил подход, что он, вместо всего приложения (там есть шапка, менюшка и прочее), врубает loading.
Мне же, хотелось бы сделать так, чтобы шапка и прочее UI было видно, пока данные фетчатся.
И я не уверен, в каком месте мне нужно вызвать этот диспатч, в каком "лайфцикле" компонента и прочее...

Георгий
20.08.2018
16:53:54
Я немного не об этом, меня просто убил подход, что он, вместо всего приложения (там есть шапка, менюшка и прочее), врубает loading.
Мне же, хотелось бы сделать так, чтобы шапка и прочее UI было видно, пока данные фетчатся.
И я не уверен, в каком месте мне нужно вызвать этот диспатч, в каком "лайфцикле" компонента и прочее...
В компоненте который будет показывать данные в ComponenDidMount запустить процедуру, которая данные за фетчит


Dmitry
20.08.2018
16:54:12
Я немного не об этом, меня просто убил подход, что он, вместо всего приложения (там есть шапка, менюшка и прочее), врубает loading.
Мне же, хотелось бы сделать так, чтобы шапка и прочее UI было видно, пока данные фетчатся.
И я не уверен, в каком месте мне нужно вызвать этот диспатч, в каком "лайфцикле" компонента и прочее...
Нормальный подход, ускоряет старт приложения. Запрос данных не дожидаясь готовности UI. Никто тебе не мешает потом уже в UI посмотреть есть ли они реально и нарисовать прогресс бар, если они все еще pending.


Demid
20.08.2018
17:03:04
Хм. Хорошо. Суть уловил. А теперь еще вопрос...
Сейчас я беру эти данные из initialState, то есть они у меня лежат как fixtures.
Сейчас у меня есть компонент, который я обернул в compose, в котором я использую connect и branch, и если у меня приходят неправильные данные, я через branch вывожу другой компонет, который говорит о том, что лист пустой...
И вот теперь я не совсем понимаю, как мне сделать так, чтобы во время fetching мне выводить какой нибудь спинер, и вот если уж он реально оказался пустым, вывести то, что я вывожу через branch...
https://gist.github.com/demidborodin/d9a7f8a09ce81be0a54d55555b96c67a

Google

Demid
20.08.2018
17:03:55

Dmitry
20.08.2018
17:04:56
Про compose не подскажу, не юзаю его :)
Но по сути, завести в сторе переменную-признак готовности данных, наверное

Георгий
20.08.2018
17:05:29
Хм. Хорошо. Суть уловил. А теперь еще вопрос...
Сейчас я беру эти данные из initialState, то есть они у меня лежат как fixtures.
Сейчас у меня есть компонент, который я обернул в compose, в котором я использую connect и branch, и если у меня приходят неправильные данные, я через branch вывожу другой компонет, который говорит о том, что лист пустой...
И вот теперь я не совсем понимаю, как мне сделать так, чтобы во время fetching мне выводить какой нибудь спинер, и вот если уж он реально оказался пустым, вывести то, что я вывожу через branch...
https://gist.github.com/demidborodin/d9a7f8a09ce81be0a54d55555b96c67a
{this.props.fetching && <Spinner />}
{!this.props.fetching && <List data={this.props.data} />}

Demid
20.08.2018
17:06:37

Георгий
20.08.2018
17:06:59
Ну как нибудь так, да

Dmitry
20.08.2018
17:07:08
Либо просто проверять на null эти данные, если для них нет начальных значений в сторе.

Demid
20.08.2018
17:07:34
Понял, принял) Всем спасибо, пойду пробовать) Вроде как понятнее стало)

Dmitry
20.08.2018
17:08:07
Но тогда вопрос индикации при повторной загрузке/обновлении. Либо скидывать вручную в null, либо все же завести переменную-флаг

Георгий
20.08.2018
17:10:48
Имхо

Again
20.08.2018
17:19:31
Нужно переренерить 1 компонент из другого, они ничего друг о друге не знаю
есть какая-нибудь возможность это сделать, кроме использования редакска?

Google

Cenator
20.08.2018
17:20:18
lifting state up

Again
20.08.2018
17:20:59
мне нужно обновить сайдбар через кнопочку
эти компоненты встречаются только в мейн контейнере, который встраивается на страницу
устану поднимать.
Лан, сделаю через редакс

Aleksey
20.08.2018
17:23:55

Dmitry
20.08.2018
17:26:27
Подскажите пожалуйста почему React не может быть рассмотрен как MVC фреймворк. render это View, state это Model, а обработчики событий которые мы определяем это Controller ?

Aleksey
20.08.2018
17:27:11
State это не модель, это состояние компонента

Cenator
20.08.2018
17:27:24

Dmitry
20.08.2018
17:29:23
дата флоу односторонний
Это единственная причина, будь в реакте двустроннее связывание, можно было бы называть фреймворком?

Пг
20.08.2018
17:30:10

Максим
20.08.2018
18:59:09
Народ всем привет такая тема есть три компонета 1 главные компонет и 2 внутри него, этим двум я передаю одну и ту же функцмю! Во встором компоненте идет подсчет в 3 действие и вот вопросс я могу вызвать функцию из 2 компонета когда происходит действме в 3?

Arthur
20.08.2018
18:59:36
Да

Максим
20.08.2018
18:59:49
как не подскажите ?

Arthur
20.08.2018
19:00:20
Или генерить иветы, или проброс функции через пропсы в дочерний компонент

Cenator
20.08.2018
19:00:29

Максим
20.08.2018
19:00:53

Bugs
20.08.2018
19:13:24

Максим
20.08.2018
19:14:08
как вайрянт тоже можно спасибо

Георгий
20.08.2018
19:45:11
что не понятно то ?
Javascript исполняется в одном потоке, потому все исполняется последовательно. Если компонент 3 подвесит поток намертво, то все повиснет.
Имхо не получится вызвать из второго компонента метод

Google

Максим
20.08.2018
20:03:20

Дмитрий
20.08.2018
20:05:40
Офк логика вне view — это самый адекватный выход

Максим
20.08.2018
20:06:28


Mark
21.08.2018
03:25:57
Есть json объект следующего вида:
[
{data: "string", anotherData: {however:'lol'}},
...
]```Мне нужно отрендерить таблицу, делаю следующее:
slice - чтобы выбрать объекты от n до m значения (используется для "пагинации")
Затем рендерится таблица:
```json2table = json => {
const cols = Object.keys(json[0]);
const headerRow = cols.map(col => <th key={col}>{col}</th>);
const bodyRows = json.map(row => (
<tr key={row}>
{cols.map(col => <td key={row[col]}> {row[col]} </td>)}
</tr>
));
return (
<table>
<thead>
<tr>{headerRow}</tr>
</thead>
<tbody>{bodyRows}</tbody>
<tfoot>
<tr>{headerRow}</tr>
</tfoot>
</table>
);
};Проблема:
1) Во время пагинации (значения от и до в slice меняется и массив режется соответственно этим значениям) окуда-то появляются новые cols, я не пойму, откуда
2) Объект в объекте может содержать не только текст, но и массив, как лучше всего это отображать?
[
{date: "string", anotherData: ['string', ...], oneMore:[{omg:'really?'}]}
]
Буду рад любой помощи, правки приносят быстрее, чем я успеваю обрабатывать все :(
UPD:
Возможно-ли, что новые колонки появляются из за slice? Мне кажется именно здесь кроется корень проблемы, чем лучше всего заменить?
UPD:
Не понимаю, рендерится 30 VNode элементов (tr), в которых 19 childrens (cols/td), но в таблице откуда-то появляются в некоторых строках (tr) лишние столбцы (td)
Ну вот и какого..
UPD:
Проблема решена
Решение:
НИКОГДА не забывать смотреть, что передается в key внутри map, потому-что null - вообще не годится как ключ
Всем спасибо за внимание и помощь!
(Знаю, у вас еще очень рано, спите сладко ❤ )


Аrtur
21.08.2018
07:08:34
Доброе утро коллеги!
У меня вопрос по редюсерам.
Я изменяю стор в зависимости от экшена следующим способом:
case FETCH_CONTENT.success:
return {
...state,
[payload.viewName]: {
...state[payload.viewName],
data: [...payload.data],
receivedAt: Date.now(),
isFetching: false,
error: null
}
};
У контейнера несколько вью, а во вью еще есть разные разделы и данные для них тянутся разными запросами, но обрабатываются одинаковыми экшенами-сагами-редюсерами
Как думаете, норм так данные в стор класть или есть варианты получше?
Работает прекрасно, но хочется лучше

Admin
ERROR: S client not available

Peter
21.08.2018
07:15:24
Кто-нибудь проходил этот курс http://professionalreactapp.com/ ? Что можете сказать?
Может кто подсказать годный курс по react/redux не для самых новичков, чтобы там было про архитектуру, паттерны и т.д?

Cenator
21.08.2018
07:16:45

Max
21.08.2018
07:17:09

Ed
21.08.2018
07:18:15
доброе утро, всем.

Max
21.08.2018
07:18:50

Ed
21.08.2018
07:18:52
реакт только изучаю, и до конца еще не разобрался с props, не подскажите, в чем у меня ошибка тут

Max
21.08.2018
07:19:45

Eugene
21.08.2018
07:19:50

Max
21.08.2018
07:20:05

Ed
21.08.2018
07:20:11

Max
21.08.2018
07:20:21

Eugene
21.08.2018
07:20:40

Ed
21.08.2018
07:20:41
я понял. спасибо.

Google

Peter
21.08.2018
07:21:07

Max
21.08.2018
07:22:36

Никита
21.08.2018
07:25:55
В бесплатных видео у него вроде есть субтитры) если на courses.wesbos смотреть

Max
21.08.2018
07:26:24

Никита
21.08.2018
07:26:57
У него, кстати, должны на гитхабе лежать субтитры, я их видел там у него в каком-то репозитории

Max
21.08.2018
07:28:09

Ed
21.08.2018
07:30:32