
Valeriy
27.08.2018
08:26:57
все отталкивается от урлов, а не от компонентов

Roman
27.08.2018
08:27:19
им бы роуты сделать как в reach router

Valeriy
27.08.2018
08:27:23
в итоге тебе приходится весь этот гемор с урлами вруную разруливать по всему приложению

Roman
27.08.2018
08:28:01
там прям очень ахуенно. В одном месте все роуты можно сделать и смотреть какие страницы есть и делать код сплиттинг приятнее

Google

Valeriy
27.08.2018
08:28:59

Roman
27.08.2018
08:29:15

Kendr
27.08.2018
08:29:30

Valeriy
27.08.2018
08:29:30
на хера указывать в компонентах path, при этом делая Link на урлы

Roman
27.08.2018
08:29:38

Cenator
27.08.2018
08:29:40

Kendr
27.08.2018
08:30:02

Исаев
27.08.2018
08:30:08
Ребят, а кто как борется с ошибкой вызова setState в unmounted компоненте?

Valeriy
27.08.2018
08:30:22

Джон
27.08.2018
08:30:24

Исаев
27.08.2018
08:30:53

Valeriy
27.08.2018
08:31:15
не вариант
вас ненавистников редакса послушать, так у вас все не вариант

Google

Valeriy
27.08.2018
08:32:02
зато вариант делать говнорешения неправильные постоянно ?

Kendr
27.08.2018
08:32:25

Исаев
27.08.2018
08:33:02

Valeriy
27.08.2018
08:33:31
ну просто забавно когда люди и редакс юзать не хотят и локальным стейтом пользоваться не умеют правильно при этом
а что там до фига тянуть придется?


⭕ VshelV
27.08.2018
08:35:26
Ребят, я хочу из state-less компонент переделать
в stateful компонент (extends React.class ... )
const ContactCardStateLess = ({address, contacts, all, footer, header, tag, ...other}) => (
<Card {...other}>
{<CardHeader>{header || 'Kontakt'}</CardHeader>}
<CardContent>
{contacts
.filter(cont => all || (!all && (cont.isPrimary === 'true' || cont.isPrimary)))
.map((cont, index) => {
switch (cont.type) {
case 'email':
return (
<Data
key={index}
icon
label="envelope"
data={
<EmailLink onBackground templateData={{}} tag={tag} to={cont.value}>
{cont.value}
</EmailLink>
}
small
/>
);
case 'phone':
return <Data key={index} icon label="phone" data={cont.value} small />;
case 'mobile':
return <Data key={index} icon label="mobile-phone" data={cont.value} small />;
case 'fax':
return <Data key={index} icon label="fax" data={cont.value} small />;
default:
return null;
}
})}
{address && <Data icon label="map" data={<Address {...address} />} small />}
</CardContent>
{footer && <CardFooter>{footer}</CardFooter>}
</Card>
);
class ContactCardStateful extends React.Component {
constructor(props) {
super(props);
this.state = {
edit: false,
contacts: props.contacts,
};
}
componentDidMount() {
const {address, contacts, all, footer, header, tag, ...other} = this.props;
}
render() {
return (
<Card {...other}>
....
...
...
...
);
}
}
вот так правильно?


Valeriy
27.08.2018
08:35:26
это что блеа тянуть редакс??
"тянут потянут вытянуть не могут" называется

Исаев
27.08.2018
08:36:23
Релакс, релакс. Я словно на какое то больное место у тебя наступил. Я понял твою позицию по редаксу, спасибо за совет

Valeriy
27.08.2018
08:37:12
да только что с коллегой спорил по поводу редакса, просто
тоже все боится лишний килобайт с сервера тащить в веб
лучше потратить день на велосипед и кучу грабель собрать конечно же

Kendr
27.08.2018
08:38:00

Dmitry
27.08.2018
08:38:15
Валерий, а браузер скачивает gzipped? Или минифед?

Valeriy
27.08.2018
08:39:09
ты можешь во время билда проекта все файлы зазиповать и сервак увидев в заголовке запроса что браузер принимает gz, конечно же отдаст зазипованную версию файла

Max
27.08.2018
08:42:21

Google

Valeriy
27.08.2018
08:43:03

Max
27.08.2018
08:43:18

Valeriy
27.08.2018
08:43:31
проблема с setState в размаунченом компоненте, это проблема неправильного прокидывания данных в компонент
либо запрос делается непосредственно из самого компонента
либо контекст и setState прокидывается туда куда не надо
если компонент может отмаунтиться раньше момента кокончания выполнения запроса, значит этот запрос нужно делать на уровень выше и прокидывать данные через пропсы
либо через редакс

Max
27.08.2018
08:45:02

Valeriy
27.08.2018
08:45:13
либо из родителя прокидывать пропсом саму функцию, которая будет делать запрос асинхронные, но данные прокидывать в копонент через пропсы так же
но флажки расставлять это жесть
тем более где ты этот флажок поставишь?

Valeriy
27.08.2018
08:46:54
в стейте компонента, который размаунтится к тому времени?

Max
27.08.2018
08:47:01

Valeriy
27.08.2018
08:47:12
ну this уже не будет к тому времени

Max
27.08.2018
08:47:26

Valeriy
27.08.2018
08:47:38
да с какого перепуга?
если там компонент рендерится по условию к примеру
{isVisible && <MyComponent />}

Max
27.08.2018
08:48:22
если там компонент рендерится по условию к примеру
спорить не буду, примера под рукой нет, делать пример тоже нет сейчас желания. Если у вас есть - можете запилить что-нибудь, буду знать на будущее. Мне кажется, что флажок втыкался в this, но так как кейс это редкий, мог забыть
p.s. и наверняка рендерилось не по условию ,а по роутеру в моей задаче. Но там скорее всего дело было в косяке архитектурном.

Google

Исаев
27.08.2018
08:50:01

Kevin
27.08.2018
08:50:38

Max
27.08.2018
08:50:40

Stanislav
27.08.2018
08:51:22

Исаев
27.08.2018
08:51:38

Valeriy
27.08.2018
08:52:01
гарбадж коллектор то не может своевременно высвободить память

Admin
ERROR: S client not available

Исаев
27.08.2018
08:54:11
после завершения запроса то освободит
хотя звучит так себе

Kevin
27.08.2018
08:56:07
Мне даже интересно, как ещё можно вызвать setstate на отмонтированном компоненте. Запросы отменяются, интервалы/таймауты чистятся, от обсёрваблов можно отписаться, что остаётся?

Исаев
27.08.2018
08:58:39

Max
27.08.2018
08:59:21

Valeriy
27.08.2018
08:59:35
в данном случае ошибка делать слишком умным дочерний компонент, доверяя ему логику запроса данных

Kevin
27.08.2018
08:59:51

Valeriy
27.08.2018
09:00:09
лучше эту логику вынести в родителя, который гарантированно не будет отмаунчен и передать функцию инициации запроса в дочерний компонент

Kevin
27.08.2018
09:00:38

Valeriy
27.08.2018
09:01:00
типа <Child request={this.request} data={this.state.result} />

Max
27.08.2018
09:01:01

Исаев
27.08.2018
09:01:17

Google

Исаев
27.08.2018
09:01:50

Valeriy
27.08.2018
09:02:29
либо делать вообще через context api
обернуть в провайдер весь роутинг
и ловить данные в дочерних компонентах на любой глубине и запросы делать так же через контекст апи

Peter
27.08.2018
09:04:41
Всем привет, такой вопрос. В редакс сторе лежит массив с объектами, этот массив прикидывается в компонент-таблицу через connect и внутри мапится в строки этой таблицы. В компоненте также есть кнопка, при нажатии на нее массив в сторе сортируется, но при этом почему-то не происходит перерисовки таблицы. Как заставить перерисовываться компонент с таблицей при каждой сортировке массива?

Исаев
27.08.2018
09:05:03

Cenator
27.08.2018
09:05:12

Peter
27.08.2018
09:05:28

Cenator
27.08.2018
09:05:46
Да
возьми из рамды сорт или любой другой иммутабельный

Kevin
27.08.2018
09:05:46
Да
Скорее всего, мутируешь данные
Или можно [...arr].sort()

Peter
27.08.2018
09:08:44

Sukhrob
27.08.2018
09:11:48
Привет! У кого есть пример библиотеки со своими компонентами, которые опубликованы в NPM?
Хотел бы глянуть, как правильно создавать такие библиотеки.

Сергей
27.08.2018
09:12:56

Andrey
27.08.2018
09:12:58
1 минута гугла.

Valeriy
27.08.2018
09:15:40

Вадим
27.08.2018
09:16:19

Valeriy
27.08.2018
09:16:49
обычно берут названия полей, по которым нужно отсортировать, порядок сортировки, данные и сортируют в селекторе

Исаев
27.08.2018
09:17:16