@react_js

Страница 4693 из 5115
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
им бы роуты сделать как в reach router
ну reach router уже ближе к тому что должно быть, но тоже сырое с архитектурной точки зрениея говно

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

Roman
27.08.2018
08:29:38
Чем? )
чем rr4

Cenator
27.08.2018
08:29:40
Чем? )
вложеные роуты

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

Джон
27.08.2018
08:30:24
Ролты
ну одно из двух

Исаев
27.08.2018
08:30:53
redux
не вариант

Valeriy
27.08.2018
08:31:15
Ребят, а кто как борется с ошибкой вызова setState в unmounted компоненте?
либо надо проносить данные через пропсы от родителя

не вариант
вас ненавистников редакса послушать, так у вас все не вариант

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
тоже все боится лишний килобайт с сервера тащить в веб
При этом грузят картинки в сумме на 5 мегобоитов

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

Valeriy
27.08.2018
08:39:09
При этом грузят картинки в сумме на 5 мегобоитов
не поверишь, но так оно и есть, почему бы полупрозрачный фон на 500кб не затянуть

Валерий, а браузер скачивает gzipped? Или минифед?
все современные браузеры и все современные веб сервера умеют gz

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

Max
27.08.2018
08:42:21
Ребят, а кто как борется с ошибкой вызова setState в unmounted компоненте?
там где это вызывается (проблемное место), делай проверку (заранее заведи флажок this._mounted ) На cwu делай this._mounted = false

Google
Max
27.08.2018
08:43:18
херовый совет
а) чем? б) что лучше?

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

либо запрос делается непосредственно из самого компонента

либо контекст и setState прокидывается туда куда не надо

если компонент может отмаунтиться раньше момента кокончания выполнения запроса, значит этот запрос нужно делать на уровень выше и прокидывать данные через пропсы

либо через редакс

Max
27.08.2018
08:45:02
проблема с setState в размаунченом компоненте, это проблема неправильного прокидывания данных в компонент
возможно, там что-то да найдется по этой теме, но в целом сам совет рабочий. Ваша позиция - если есть такая ошибка - это звоночек пересмотреть поточнее что делается не так? Ок. но так же есть решение проблемы с флажком, если там не позволяет время/мозги исправить в данный момент. Либо (допускаю) это нормальный совет.

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

но флажки расставлять это жесть

тем более где ты этот флажок поставишь?

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

Max
27.08.2018
08:47:01
тем более где ты этот флажок поставишь?
я в коде видел это в this самого компонента

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
там где это вызывается (проблемное место), делай проверку (заранее заведи флажок this._mounted ) На cwu делай this._mounted = false
это решение я проверял, оно вполне рабочее, но вообще не советуют использовать его.

Kevin
27.08.2018
08:50:38
Ребят, а кто как борется с ошибкой вызова setState в unmounted компоненте?
Если речь про, например, запросы, то их можно отменять в cWU

Max
27.08.2018
08:50:40
это решение я проверял, оно вполне рабочее, но вообще не советуют использовать его.
причины “не советования” мы разобрали. Но раз работает и проблем нет - ок

Stanislav
27.08.2018
08:51:22
А в react-router-dom нет что-то типо navigation, как в react-navigation?
browserHistory и props в которых много чего есть - https://reacttraining.com/react-router/web/api/history/history-is-mutable

Исаев
27.08.2018
08:51:38
причины “не советования” мы разобрали. Но раз работает и проблем нет - ок
я на самом деле не понял почему "не советуют" так как если к моменту размаунчивания переменной не будет, то это звоночек к тому чтобы не делать setState))

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 на отмонтированном компоненте. Запросы отменяются, интервалы/таймауты чистятся, от обсёрваблов можно отписаться, что остаётся?

Max
27.08.2018
08:59:21
Мне даже интересно, как ещё можно вызвать setstate на отмонтированном компоненте. Запросы отменяются, интервалы/таймауты чистятся, от обсёрваблов можно отписаться, что остаётся?
ошибка остается. забыли отменить, очистить и тд тп. Чаще всего, это косяк какой-то, который надо найти, а не ставить заплатку.

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

Kevin
27.08.2018
08:59:51
ну в данном случае не отменяется запрос, а если и отменять, то будет catch в любом случае
Ну, в catch можно проверять, ошибка это или отмена, и ничего не делать, если отмена

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
Ну, в catch можно проверять, ошибка это или отмена, и ничего не делать, если отмена
ну вот к этому варианту я уже потихонечку прихожу, и кажется что один из самых лаконичнх

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

либо делать вообще через context api

обернуть в провайдер весь роутинг

и ловить данные в дочерних компонентах на любой глубине и запросы делать так же через контекст апи

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

Исаев
27.08.2018
09:05:03
ну значит выносить функцию запроса еще выше и проносить пропсами опять же это при условии не использования редакса
Это решение отличное я согласен, но применить его можно будет только со временем

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
Или можно [...arr].sort()
Так работает, спасибо!

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

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

Valeriy
27.08.2018
09:15:40
Так работает, спасибо!
лучше не сортировать данные прямо в сторе для этого есть selectors

Вадим
27.08.2018
09:16:19
Ребят, а кто как борется с ошибкой вызова setState в unmounted компоненте?
У нас делали на каком-то проекте без редакса переменную this.mounted = true На componentWillUnmount this.mounted = false и оборачивали setState в проверку на маунт

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

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