@react_js

Страница 2145 из 5115
andretshurotshka?❄️кде
13.09.2017
17:21:41
?

Artyom
13.09.2017
17:31:41
shallowCompare
Подробнее, пожалуйста? Я всегда думал что реакт сравнивает новый и старые пропсы, сейчас читанул, он этого не делает. Ок, не прав. Но как написано тут https://habrahabr.ru/post/319536/ "Определение функции по умолчанию возвращает true" shouldComponentUpdate(nextProps, nextState) { return true; } Почему у меня тогда в обычном реакт компоненте не происходит обновление при приходе новых пропсов большой глубины и происходит, если я руками задаю shouldComponentUpdate(nextProps, nextState) { return true; }

Denis
13.09.2017
17:32:17
Ребята, очень нужны ваши доклады :)

Google
Юра
13.09.2017
17:34:01
А то не очень понятно, что это за пропсы большой глубины.

Artyom
13.09.2017
17:34:26
Выше писал

Нет ну это невозможно... На сколько глубоко реакт пропсы сверяет в обычном компоненте? У меня обновляются данные в nextProps.app.state.person.avatar: string, а он даже не пытается рендерить

Юра
13.09.2017
17:36:42
Т.е. const Children = (props) => { // Вот здесь вот они приходят. return (<div />) } const Parent = () => { return <Children /> }

Artyom
13.09.2017
17:37:40
Ну погугли, это обычный термин
shallowCompare идет отдельной либой или в PureComponent, как это ко мне относится?

Юра
13.09.2017
17:38:56
Реакт вообще не сравнивает структуру пропсов, а просто перерисовывает компонент каждый раз. Если пропсы поменялись где-то в глубине, то нужно явно вызвать forceUpdate();

Юра
13.09.2017
17:40:32
Ужасный совет
Обоснование будет?

Дмитрий
13.09.2017
17:40:36
Вообще забудь про существование forceUpdate

Google
Artyom
13.09.2017
17:41:00
Я это все понимаю Я не понимаю как может отработать componentWillReceiveProps, но не отработать componentWillUpdate в этой парадигме?

Сергей
13.09.2017
17:41:30
Обоснование будет?
Лучше строить нормальную архитектуру, чем ломать ее так

Юра
13.09.2017
17:41:56
Лучше строить нормальную архитектуру, чем ломать ее так
Лучше быть богатым и здоровым, это всем понятно.

philipp
13.09.2017
17:41:57
жёпу себе pinned

Stepan
13.09.2017
17:42:00
Обоснование будет?
Ну потому что это костыль

Сергей
13.09.2017
17:42:32
Лучше быть богатым и здоровым, это всем понятно.
Нет. Достаточно писать нормальный код и разобраться в лайфсайкле

Artyom
13.09.2017
17:42:41
Ну тут я с совой согласен. У меня все эти вопросы возникли в легаси проекте. В своих не возникали пока

Mike
13.09.2017
17:42:43
Обоснование будет?
потому что forceUpdate если понадобился, то ты сотворил какую-то дичайшую хуету

Artyom
13.09.2017
17:43:05
Повторюсь. Как может отработать componentWillReceiveProps, но не отработать componentWillUpdate в этой парадигме?

Юра
13.09.2017
17:43:37
componentWillUpdate ЕМНИП, не вызывается при первоначальном рендеринге.

Т.е. только когда замаунтеный компонент перерендеривается.

Andrey
13.09.2017
17:44:07
Ну, логично.

Юра
13.09.2017
17:44:45
Про forceUpdate: оценочные суждения не принимаются, только факты интересуют.

Сергей
13.09.2017
17:45:10
Stepan
13.09.2017
17:45:28
Неочевидно нарушаешь lifecycle
Хуй найдёшь, где какой-то пидорас обновления зафорсил

Мало того, здоровый человек на это и расчитывать не будет

Artyom
13.09.2017
17:46:30
?Повторюсь? Как может отработать componentWillReceiveProps, но не отработать componentWillUpdate в этой парадигме?

Stepan
13.09.2017
17:46:33
Аргументы "за"-то будут? "Мне так удобно"?

Дмитрий
13.09.2017
17:47:02
Lifecycle курильщика

Google
Юра
13.09.2017
17:47:07
Т.е. получается, что когда компонент рендерится в первый раз, то во все последующие разы, когда он рендерится в том же месте в доме, ´componentWillUpdate´ вызывается.

Mike
13.09.2017
17:47:20
Про forceUpdate: оценочные суждения не принимаются, только факты интересуют.
потому что ты вклиниваешься в цикл и его меняешь, что неочевидно работает, и кроме того, никто от твоего компонента этого ждать не будет

Mike
13.09.2017
17:48:18
?Повторюсь? Как может отработать componentWillReceiveProps, но не отработать componentWillUpdate в этой парадигме?
а что если пропсы не поменялись? пришли те же самые? или ты переопределил componentShouldUpdate возвращать false?

Artyom
13.09.2017
17:48:27
Ответил чуть выше.
componentWillReceiveProps не вызывается при первом рендере. Не ответил

Mike
13.09.2017
17:49:53
Не переопределил
ну я тебе два сценария там привел, когда бывает так

Юра
13.09.2017
17:50:03
´componentWillUpdate() is invoked immediately before rendering when new props or state are being received. Use this as an opportunity to perform preparation before an update occurs. This method is not called for the initial render.´

Mike
13.09.2017
17:50:23
Вопрос не понял.
а он и не тебе был

Юра
13.09.2017
17:50:55
И

React doesn't call componentWillReceiveProps with initial props during mounting.

Mike
13.09.2017
17:52:16
>_< Где?
новые пропсы когда равны старым, ну блин

Сергей
13.09.2017
17:52:30
а он и не тебе был
Тут общий чат. Хочешь адресовать вопрос кому-то пиши в личку

Mike
13.09.2017
17:53:21
Тут общий чат. Хочешь адресовать вопрос кому-то пиши в личку
так я реплаем сделал, если он не понял вопрос, то скорее всего потому, что он на другую тему

Artyom
13.09.2017
17:53:21
новые пропсы когда равны старым, ну блин
А я тебе говорю, что 1) по дефолту shouldComponentUpdate должен возвращать всегда true, во вторых у меня вложенность в 5 степеней - пропсы меняются, но обновления не происходит. ЧЯДНТ?



Google
Юра
13.09.2017
17:55:48
Какая трогательная забота.

Stepan
13.09.2017
17:56:40
Ты продолжаешь советовать хуйню, игнорируя доку и аргументы?

Сергей
13.09.2017
17:57:13
Он пошел в бан

Stepan
13.09.2017
17:57:25
Спасибо

Artyom
13.09.2017
17:59:46


А вот что за equal я чет не нашел

Ilya
13.09.2017
18:04:39
А вот что за equal я чет не нашел
shallowEqual, он же https://facebook.github.io/react/docs/shallow-compare.html

Mike
13.09.2017
18:06:41
tl;dr когда сравнивается объект, он сравнивается по ссылке, а тебе нужно не по ссылке а по наполнению

Mike
13.09.2017
18:07:07
поэтому тебе или свою надо функцию написать, которая рекурентно пробежится по полям и сравнит, или стоковую заюзать

от кого угодно

Artyom
13.09.2017
18:07:25
В лодаше есть...

Понятно. Ответ на мой вопрос - реакт сравнивает только ссылки на this.props и nextProps.

Ну и стейт с контекстом...

Mike
13.09.2017
18:08:48
так это вроде написали сразу

просто это частый вопрос здесь

Google
Ilya
13.09.2017
18:09:00
нет

если хоть одна ссылка поменялось, то происходит рендер

Mike
13.09.2017
18:09:03
и ответ со словом shallow сразу намекает

Ilya
13.09.2017
18:09:16
он сравнивает первый уровень этих объектов

Artyom
13.09.2017
18:09:55
Ясно...

и ответ со словом shallow сразу намекает
Нет, т.к. все, почему-то, ссылаются на PureComponent

Mike
13.09.2017
18:10:33
да нет же

ты просто почему-то shallowCompare сразу туда записал

хотя это термин из простого js

Artyom
13.09.2017
18:11:03


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