@react_js

Страница 989 из 5115
Oleg
22.02.2017
06:14:34
а реакт дружит с material-ui?

Kir
22.02.2017
06:15:21
Ну хотя бы по тому, что в оф доках реакта в key установливается item.id

@Dandandandan спроектируем ситуацию, есть писок элементов который ты выводишь в map, и в качестве key используешь index. Далее ты берешь и удаляешь элемент из серидины списка, реакт просто запутается какой элемент был удален

key помогает реакту определить какой из элементов был удален изменен добавлен, в случае с index список просто сместится

Google
Kir
22.02.2017
06:23:30
@Orion55 реакт со всеми дружит, если его подружить )))

Alex в виду того, что очень редко возникают ситуации когда нужен стоковый селект, как правило нужен поиск, type head, кастомное оформление и.т.д. Тот копонент, что я тебе скинул позволяет это сделать легко и быстро )

Alex
22.02.2017
06:25:48
@GruFFix понял, спасибо

Danil
22.02.2017
06:25:51
Thanks

? Алёна
22.02.2017
06:28:52
https://github.com/JedWatson/react-select
Здравствуй, .Select :global {}

Kir
22.02.2017
06:38:43
Оставим холивары )

Amandos
22.02.2017
06:48:30
Всем привет. Подскажите готовое решения для react - та https://snag.gy/JHtk2x.jpg

Kir
22.02.2017
06:49:30
то это аксиома, index использовать не круто ) Антипатерн

localvoid
22.02.2017
06:50:20
ничего плохого в использовании индекса нет, если понимаешь как всё работает

Kir
22.02.2017
06:50:41
пусть будет так )

В документации реакта написано - "Мы не рекомендуем"

Oleg
22.02.2017
06:51:39
а если рандомом формировать key?

Google
localvoid
22.02.2017
06:52:07
а если рандомом формировать key?
на каждом вызове рендера рандомные ключи?

Oleg
22.02.2017
06:52:48
нет, в componentDidMount()

localvoid
22.02.2017
06:54:00
а какой юз кэйс? если статичный список, то проще индекс пихать, ну или инлайнить список чтоб реакт не кричал о том что нужно вставить ключи

Kir
22.02.2017
06:56:27
глупый спор, у тебя есть item.id и есть index, проблема религии устанавивать key={item.id} или как ? в документации четко сказанно есть id устанавливайте id

localvoid
22.02.2017
06:57:28
может ещё расскажешь как работает реконсайлер ? :)

Kir
22.02.2017
06:58:17
Может не будем устраивать холивары на очевидные ранее обдуманые и описаные в документации темы )))

Я же не мозгом с тобой мериюсь ?

localvoid
22.02.2017
07:00:00
ну так в документации как раз и расписано как всё работает в случае если используются позиции элемента для индексации

хотя судя по тому что даже в некоторых форках реакта этого не понимают, то может быть да, не стоит думать головой и просто всегда использовать какой-то уникальный ключ :)

Stas
22.02.2017
07:19:16
Всем привет. Подскажите готовое решения для react - та https://snag.gy/JHtk2x.jpg
Привет, скорее всего нужно просто использовать компонент для отображения дерева данных, например - https://github.com/pqx/react-ui-tree

Sergey
22.02.2017
07:24:24
ReactClassInterface: You are attempting to define constructor on your component more than once. This conflict may be due to a mixin.

братцы

почему ругается

http://joxi.ru/Dr8Ood7u8j17A6

Danil
22.02.2017
07:25:19
А подскажите Component will unmount сам удаляет компонент или ждет когда кто-то его удалит

Stas
22.02.2017
07:26:43
Метод вызывается когда компонент удаляется из DOM

Danil
22.02.2017
07:27:23
Ну в смысле, мы его либо сами удалим, либо вкладку в браузере закроем, как его еще вызвать можно?

Меня вчера на собеседовании спросили что есть componentWillUnmount { window.removeEventListener }

Вопрос был такой, почему обработчик не удалится

Google
Danil
22.02.2017
07:29:58
Я сказал что cWU не вызвался, мне сказали что он обязательно будет вызван мол это условие задачи

Andrey
22.02.2017
07:31:11
мало вводных

Kir
22.02.2017
07:32:06
переход на другую страницу вызовет

Stas
22.02.2017
07:32:28
window.removeEventListener - какой обработчик он удаляет?

Stas
22.02.2017
07:33:35
а контекст передается туда, например, через bind(this) ?

Danil
22.02.2017
07:34:39
Window.removeEventListener('resize', onScrollHandler.bind(this))

Denis
22.02.2017
07:34:40
+1 админ :) Добро пожаловать

Danil
22.02.2017
07:34:52
Вот так полностью

Сергей
22.02.2017
07:35:38
localvoid
22.02.2017
07:36:17
Window.removeEventListener('resize', onScrollHandler.bind(this))
ну так новая функция создаётся

Andrey
22.02.2017
07:36:35
onScrollHandler.bind(this) ... bind создает обетрку над onScrollHandler, по этому отписаться уже не получиться, если отдельно не сохранить bindOnScrollHandler = onScrollHandler.bind(this), а потом отписываться по bindOnScrollHandler

Mikhail
22.02.2017
07:36:42
любопытная новость, новая бета личного кабинета ВТБ сделана на react/redux/webpack, вот только что заметил, видать на этой неделе произошло

в сбера кстати тоже лич кабинет для юриков тоже на этом же стэке делается

оба в бете пока

Andrey
22.02.2017
07:41:32
бинд просто копирует функцию и привязывает в ней контекст
https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/Function/bind

Google
Andrey
22.02.2017
07:42:20
The bind() method creates a new function that, when called, has its this keyword set to the provided value, with a given sequence of arguments preceding any provided when the new function is called. Где я ошибся?

Stas
22.02.2017
07:43:44
constructor() { this.onScrollHandler = this.onScrollHandler.bind(this); } componentWillUnmount() { window.removeEventListener('resize', onScrollHandler) } так должно отвязаться

Алексей
22.02.2017
07:44:22
*facepalm* Оберток не создается
что ты под оберткой понимаешь?

Andrey
22.02.2017
07:44:45
ага, мне тоже интересно, может я не правильно понимаю термин обертка

Admin
ERROR: S client not available

Danil
22.02.2017
07:44:50
А почему обертка запрещает отвязаться? Мне вот это больше не понятно

Сергей
22.02.2017
07:45:15
А почему обертка запрещает отвязаться? Мне вот это больше не понятно
суть в чем когда ты подписываешься на событие, ты прокидываешь одну функцию а когда отписываешься другую

Алексей
22.02.2017
07:45:21
А почему обертка запрещает отвязаться? Мне вот это больше не понятно
addEventListener хранит ссылку на функцию, и тебе чтобы отписатся нужна та же ссылка

Andrey
22.02.2017
07:45:42
А почему обертка запрещает отвязаться? Мне вот это больше не понятно
потому когда ты отвязываешь, передаешь совершенно новую функцию, а старая не отвязыается

Алексей
22.02.2017
07:46:10
я об этом
мы если честно не можем знать создает он обертку или нет ;)

Сергей
22.02.2017
07:46:25
поэтому намного лучше если есть возможность: const dispose = subscribeToEvents(callback) dispose() // unsubscribed

мы если честно не можем знать создает он обертку или нет ;)
можем конечно просто посмотреть исходный код v8 движка например А лучше почитать стандарт

Danil
22.02.2017
07:47:10
Thanks

Алексей
22.02.2017
07:48:21
можем конечно просто посмотреть исходный код v8 движка например А лучше почитать стандарт
ну v8 это частный случай все же. если стандарт говорит создать новую функцию, то он может и через обертку сделать и просто новую функцию создать, так что это детали реализации

Алексей
22.02.2017
07:49:05
не будем забывать что bind позволяет частичное применение сделать, а просто копированием функции этого не добится

Сергей
22.02.2017
07:50:20
зависит от реализации как раз таки...

там список аргументов отдельным классом Может функция копируется, а список аргументов как раз просто забивается фикс и всё

Google
Сергей
22.02.2017
07:51:45
А если подписаться на такую же функцию тоже с bind(this)
.bind каждый раз создает новую функцию

Сергей
22.02.2017
07:52:12


Danil
22.02.2017
07:52:44
Сергей
22.02.2017
07:52:46
похоже что обертка легче для реализации)
только кажется так copy and fill на плюсах скорее всего проще и не создает оверхеда в отличие от вызова функции

Danil
22.02.2017
07:52:54
Пойду учить джс

Сергей
22.02.2017
07:54:02


Алексей
22.02.2017
07:54:24
в общем по сути для нас главное что возвращается новая, все остальное детали реализации, которые нас не должны волновать ?

не в рантайме
в рантайме jit

Алексей
22.02.2017
07:55:44
инлайнинг функций эт не к jit вроде
ну конечно ты на jit не сможешь повлиять, но он заинлайнить может) ладно, сидим тут как гадалки)

Danil
22.02.2017
07:56:14
@Dandandandan вот твоё решение
Спасибо, но я уже не прошел собеседование))

Сергей
22.02.2017
07:56:47
так ты собеседку проходил...

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