
Ilya
15.05.2018
18:56:57
black swan

CFFTRP
15.05.2018
18:58:37
Откуда вообще пошло понятие "Селекторов" в Redux ? Есть статьи на этот счет?
Как организовывать лучше и так далее
не reselect, а просто пока сам смысл

Google

CFFTRP
15.05.2018
19:05:00
Типа, просто вместо операций в присваивании в mstp делают именную функцию после редьюсеров ( которая выполняет ту же задачу, например, возвращает массив из элементов, которые > 0 )
ии...Всё ?

Андрей
15.05.2018
19:05:11

Sergey
15.05.2018
19:05:51
потому что на нем завязана внутренняя реализация реакта
он в зависимости от ключей перестраивает дерево тратя на это меньше ресурсов
а если ключи будут каждый раз разные, то перестраивать он будет все
думая что все поменялось т.к. поменялся ключ

Андрей
15.05.2018
19:07:09

Sergey
15.05.2018
19:08:16
Если ты задал ключи как индексы элемента, то при удалении одного элемента из массива данных у тебя поменяются все ключи и будет перестроено все дерево

Evgeny
15.05.2018
19:08:37
Поменяются пропсы у родительского компонента, в котором формируются дочерние, ключи поменяются

Sergey
15.05.2018
19:08:42
вместо перестроения (удаления) одного куска
посмотри скринкаст у Кантора на сайте
он хоть не очень, но это там объяснено нормально

Google

Cenator
15.05.2018
19:09:48
Нечего перестраивать

Андрей
15.05.2018
19:10:39
вместо перестроения (удаления) одного куска
Я через консоль проверял с этими ключами, и у меня не все компоненты перестраивается, а только один. И поэтому нормально такие ключи отрабатывает. Я проверял и сними и без них

Sergey
15.05.2018
19:11:09
у тебя виртуальное дерево обрабатывается, а затем перестраивается и DOM
Там 1 инпут, чел
я это к вопросу, почему ключи должны быть предсказуемыми, а не рандомным значением / индексом элемента
если ты key вообще не задашь, то у тебя по умолчанию будет браться индекс, а реакт будет яростно вопить

Play
15.05.2018
19:21:00
Как в компонент Master передать this.state.data ?
<Route path="/master/:name" exact component={Master} />

Cenator
15.05.2018
19:21:38
render prop

Sergey
15.05.2018
19:24:08
<Route path="..." render={() => <Master data={this.state.data} />

Grigore
15.05.2018
19:43:57
ребята, подскажите пожалуйста у кого был опыт: есть два варианта использования реакт с ssr 1. берем бэкэнд пишет на любимом фреймворке и ходим по по локалхосту за рендерингом к ноде, и второй вариант, берем ноду, рендерим с нодой, а за данными ходим к любимому бэкэнду, так вот при реализации второго подхода у меня получилось, что получает он верстку от ноды за 125 мс (причем это не продакшн, то есть запроса по сети как такого нет), и при первом подходе 125 сек, только там уже данные берутся у фреймворка и передаются ноде и все это уже как бы работает в сети, либо я чет намудрил, либо что хз, но чет как-то странно.

Valeriy
15.05.2018
19:45:46
"и при первом подходе 125 сек" билдится весь проект при каждом обращении? :))

Grigore
15.05.2018
19:47:35
да нет) сделал по туториалу обертку на create react app
добавил там ssr
ааа во втором
в первом у меня вызывается renderToString, через context у StaticRouter передаю данные от бэкэнда и все
https://github.com/dikiigr/django-react-boilerplate/blob/master/frontend/server/middleware/renderer.js
это второй подход

Roman
15.05.2018
19:50:31
Зачем так нужен сср, можете пояснить? Все равно это мертвая верстка, с которой пользователь никак не может взаимодействовать

Евгений
15.05.2018
19:51:06

Grigore
15.05.2018
19:52:09
seo, проекты которые продают и им важен трафик с поисковых систем нужнаются в этом как никто другие

Google

Grigore
15.05.2018
19:52:46
import express from 'express';
import React from 'react';
import { renderToStaticMarkup, renderToString } from 'react-dom/server';
import { StaticRouter } from 'react-router-dom';
import MainRouter from './app/routing/MainRouter';
var bodyParser = require('body-parser');
const app = express();
app.use(bodyParser.json());
app.get('/', (req, res) => {
let reactMarkup = renderToStaticMarkup(
<StaticRouter location={req.body.url} context={req.body}>
<MainRouter />
</StaticRouter>
)
let markup = (`
${reactMarkup}
<script>window.__DATA__ = ${JSON.stringify(req.body)}</script>
`)
return res.json({error: null, markup});
});
app.listen(process.env.PORT || 3000, () => {
console.log('Server is listening');
});
это было при первом подходу

Евгений
15.05.2018
19:53:21

Grigore
15.05.2018
19:53:48
ну медленно, учитывая что там не было даже запроса к апи
и это было по локалхосту, то есть не было выхода в сеть как такового
пытаюсь понять, где ж это я паям так усложнил, чтоб запрос был 125 мс

Евгений
15.05.2018
19:55:41
попробй зарендери <div>123</div>

Grigore
15.05.2018
19:58:47
94 мс
тоже много

Евгений
15.05.2018
19:58:58
ну медленно, учитывая что там не было даже запроса к апи
у меня страницы с запросами к графу (примерно по 8-10 штук) некоторые последовательно выполняются, и рендер занимает ~300-500, сам рендер реактом(кгда уже данные собраны) занимает около 80мс
Ну и всегда есть console.time() console.timeEnd()

Grigore
15.05.2018
19:59:21
чет не пойму, че там может быть не так

Евгений
15.05.2018
19:59:56

Grigore
15.05.2018
20:00:11
там как-то он странно сервер запускает (по туториалу), я в первом подходе webpack собирал
а тут чет как-то намудренно
require('ignore-styles');
require('url-loader');
require('file-loader');
require('babel-register')({
ignore: [ /(node_modules)/ ],
presets: ['es2015', 'react-app'],
plugins: [
'syntax-dynamic-import',
'dynamic-import-node',
'react-loadable/babel'
]
});
require('./index');
сама команда "server": "NODE_ENV=production node server/bootstrap.js"
тут случаем не получается, что на лету происходит трансляция es6 в понимаемый код нодой и тд и тп?

Евгений
15.05.2018
20:02:02

Grigore
15.05.2018
20:02:48

Roman
15.05.2018
20:08:43
интересный вопрос: имеем объект/массив возможных цветов, имеем имя пользователя....можно ли как то на основе имени пользователя высчитывать цвет его аватара к примеру? (на основе хэша от имени или как то иначе)

Google

Play
15.05.2018
20:09:35
ребята, подскажите пожалуйста у кого был опыт: есть два варианта использования реакт с ssr 1. берем бэкэнд пишет на любимом фреймворке и ходим по по локалхосту за рендерингом к ноде, и второй вариант, берем ноду, рендерим с нодой, а за данными ходим к любимому бэкэнду, так вот при реализации второго подхода у меня получилось, что получает он верстку от ноды за 125 мс (причем это не продакшн, то есть запроса по сети как такого нет), и при первом подходе 125 сек, только там уже данные берутся у фреймворка и передаются ноде и все это уже как бы работает в сети, либо я чет намудрил, либо что хз, но чет как-то странно.
я долго мучался с SSR и обратился к https://github.com/reframejs/reframe

Roman
15.05.2018
20:15:06

Neuro
15.05.2018
20:25:07
А есть ли документация реакта на великом и могучем?

Евгений
15.05.2018
20:26:03

Сергей
15.05.2018
20:31:01

Play
15.05.2018
20:33:51

Admin
ERROR: S client not available

Andrew
15.05.2018
20:39:20

Dmitry
15.05.2018
20:39:51
next ?
мелким шрифтом *кроме фреймворков завереных совой*

Andrew
15.05.2018
20:40:05
хотя я на его кастомизацию потратил времени наверное столько же
сколь бы ушло на написание обыного ssr

?
15.05.2018
20:42:02
Даже для Совы

Сергей
15.05.2018
20:42:24

Maksim
15.05.2018
21:20:27
ContextApi заменит полностью Redux?

Andrew
15.05.2018
21:20:58
нет
к сожалению
хотя это вообще о разном

Maksim
15.05.2018
21:21:20

Google

Andrew
15.05.2018
21:21:31
ну это разные вещи
редакс работает через контекст
сам контекст это механизм распределения данных
он ничего нам не говорит о их менеджменте

code4aman
15.05.2018
21:28:22

Again
15.05.2018
21:39:38
покажите структуру ваших проектов
Группируйте компоненты по функциям?

Cenator
15.05.2018
21:41:14

Again
15.05.2018
21:41:54
можешь пример скинуть?
какие еще папки есть кроме components

Cenator
15.05.2018
21:42:22

Again
15.05.2018
21:42:44

Andrew
15.05.2018
21:47:33
ого https://medium.com/@lucyhackwrench/%D1%87%D1%82%D0%BE-%D1%83%D0%BC%D0%B5%D1%8E%D1%82-%D0%B8-%D1%87%D0%B5%D0%B3%D0%BE-%D0%BD%D0%B5-%D1%83%D0%BC%D0%B5%D1%8E%D1%82-css-custom-properties-18949a22ee81?ct=t(hamail_20180515)
интересно как с этим можно sc закрутить

Cenator
15.05.2018
21:49:22
не нужно
есть же стейт менеджеры и вставка жс переменных

Andrew
15.05.2018
21:51:18
ну я вот хз как эти переменные с js закрутить
допустим для тем

Cenator
15.05.2018
21:51:49
у жс есть все для этого

Andrew
15.05.2018
21:51:58
или просто хуярить как раньше color:${props.color}