
Anton
22.04.2016
19:17:49
Есть в родительском компоненте метод update(obj). В obj приходит новое состояние, которое потом устанавливаем. А дочерний компонент принимает props (<Child update = { this.update.bind(this)} />). В Child создается событие onClick={ () => update(newObj)}. Вопрос: зачем использовать bind для передачи функции? Кому не сложно, объясните

from
22.04.2016
19:21:26
oO гхм...
а зачем вообще нужен .bind()? )
для того же и тут

Anton
22.04.2016
20:04:53
bind возвращает функцию обертку

Google

Alexander
22.04.2016
20:06:26
Тебя смущает, что при этом в функиции-обработчике всё равно не испльзуется контекст, или что?
Если не делать bind, то контекст переданной функции потеряется при вызове, а так он всегда связан

from
22.04.2016
20:08:27
И уж к слову делать это лучше не момент рендеринга

Alexander
22.04.2016
20:08:30
При этом для консистентности и “на всякий случай” так делают даже с функциями которые this не используют внутри

Anton
22.04.2016
20:11:09
В данному случае <Child update = { this.update.bind(this)} /> this в bind будет указывать на родительский компонент?

Alexander
22.04.2016
20:11:57
Да

trump ? trump ? hillary
22.04.2016
20:12:50
/angular_js

Renat
22.04.2016
20:13:07
/angular_js

from
22.04.2016
20:13:12
))

Anton
22.04.2016
20:16:24
/angular_js
/angular_js
/angular_js
/angular_js

Google

Anton
22.04.2016
20:16:33
/angular_js
)))

Dmitry
22.04.2016
20:16:42
так его!
раз вечер вопросов начали, может кто-нибудь подскажет) начал возиться с редаксом, сделал себе более менее абстрактные экшн и редьюсер для работы с саджестом в инпуте. Для 2х инпутов в сторе использую один и тот же редьюсер и, соответственно, оба реагирует на экшн и показывают саджест. Есть какой-нибудь бест практис как это обойти? Я пока нашел один метод, но он кажется костыльным и вероятно просто голова пока по другому устроена)

Vadim
22.04.2016
20:30:29
а зачем экшен делать абстрактным? есть 2 инпута, у каждого своя логика, но к примеру одинаковая структура данных, которую может обработать функция. Инпут эмитит экшен, который попадает в свой редьюсер и использует универсальную функцию, которая процессит данные.

Dmitry
22.04.2016
20:34:07
ну сейчас какой-то простой пример с инпутом, а потом появится логика посложнее у 2х инстансов блока на странице и придется копировать эти обертки, вызывающие универсальные функции, так?

Vadim
22.04.2016
20:36:00
Что такое обертка?)

Dmitry
22.04.2016
20:38:13
action creator, который дергает универсальные функции для экшенов

Alexey
22.04.2016
20:38:31
/JSlang

Vadim
22.04.2016
20:41:46
инстанс может вызывать экшен и передавать название своей модели, с которой будет работать редьюсер. тогда 1 экшен сможет обслужить много инстансов.

Alex
22.04.2016
20:45:48
/angular_js
Упс

from
22.04.2016
20:46:04

Dmitry
22.04.2016
20:50:46
спасибо, гляну

Vitaliy
22.04.2016
22:03:31
/angular_js_nadoel

Roman
23.04.2016
00:17:57
Ну привет

[Anonymous]
23.04.2016
07:29:04
/angular_js
eto obman! :<

Gordey
23.04.2016
07:32:50
da :’(

Roman
23.04.2016
07:42:06
/stat@comstatbot

Google

Costa
23.04.2016
07:51:34
Всем привет
Подскажите, пожалуйста, делаю подобную штуку
http://jsfiddle.net/kennis/JTvFZ/
Только нужно вывести более сложный хтмл, и ~10 000 записей, как правильно оптимизировать все это? Я так понимаю, нужно разбить данные на группы и всем невидимым в данный момент элементам сделать display none
С телефона фидл не работает, там фишка в скролле

Vladimir
23.04.2016
07:58:51
дисплей нон не стоит, ведь ты можешь просто не рисовать их.
а высота элемента известна и фиксирована?

Costa
23.04.2016
08:06:57
Да, можно зафиксировать
А в како момент лучше перерисовывать?

Vladimir
23.04.2016
08:34:53
1) вешаешь на скролл контейнера эвент (на самом деле, лучше по таймауту проверять каждые 200-500мс).
2) по позиции скролла, зная высоту элемента, определяешь, какие элементы влезут в экран
3) прибавляешь по десятку сверху и снизу.
4) рисуешь необходимое количество элементов, верхнему ставишь марджин-топ, так, чтобы сохранить его позицию внутри скролла

Costa
23.04.2016
08:49:02
Те перерисовываешь элементы при каждом событии скролла? Или надо отслеживать какие-то точки определённые? Спасибо, примерно понял, буду пробовать!

Vladimir
23.04.2016
08:53:26
не, лучше все же по таймауту, а то утонешь в эвентах. давай уточню.
1) по таймауту считаешь в контейнере скролл оффсет, кладешь его в стейт контейнера.
2) в функции рендер контейнера определяшь минимальный и максимальный индексы элементов, которые видны на экране, с небольшим запасом
3) рисуешь только эти элементы, указав первому смещение относительно контейнера, равное его индексу, помноженному на высоту элемента
4) не забываешь снять таймаут на компонентдидмаунте
5) идешь и проламываешь голову человеку, который придумал на одном экране показывать 10000 элементов

Costa
23.04.2016
08:57:15
=) спасибо), я denounced использую

Vladimir
23.04.2016
08:57:22
6) чтобы не дергать рендер лишний раз, на самом деле можно индексы тоже по таймауту пересчитывать и падейтить стейт только если они изменились

Costa
23.04.2016
08:57:25
Debounced

Gordey
23.04.2016
08:57:29
может пейджинг или подгрузку по скроллу

Vladimir
23.04.2016
08:58:12
подгрузка по скроллу не особенно спасет, если кто-то во что бы то ни стало решит доскроллить до конца
дебаунс не спасает от того, что функция будет часто дергаться, лучше таймаут:)
то есть дебаунсед-функция - это тоже функция, с логикой

Admin
ERROR: S client not available

Vladimir
23.04.2016
09:00:57
не таймаут, а сетинтервал, конечно, что это я...

Google

Costa
23.04.2016
09:01:10
А...
Вот, кстати, спасибо
Как-то я этот момент упустил

ssha
23.04.2016
09:07:29
/JSlang

Vasiliy
23.04.2016
09:09:07
ребят, а существует какая-нибудь обертка на webpack? очень уж не очевидно все получается, особенно если делаешь монорепу и нужно мерджить конфиги

hlomzik
23.04.2016
09:10:18

Vladimir
23.04.2016
09:14:41
ну не знаю, в задаче риалтаймовой точности не нужно, а код с таймаутом и код с интервалом будут оличаться только вот этим самоставом в конце

hlomzik
23.04.2016
09:16:56
если происходят затупы, то таймауты могут пачкой выполниться. т.е. если у нас таймаут на секунду, затуп на пять секунд, то после пятой коллбек сразу выполнится подряд пять раз
я же ничего не напутал?)

Vladimir
23.04.2016
09:24:31
http://javascript.info/tutorial/settimeout-setinterval#the-real-delay-of-setinterval
очень хороший поинт, но в данной задаче пофиг на самом деле

hlomzik
23.04.2016
09:26:14
да, я про это

Vladimir
23.04.2016
09:26:54
ну вот пачкой в сетинтервале не вызываются, один запрос втает в очередь и выполняется когда можеи

Aleksei
23.04.2016
09:27:38
facebookver это почти как semver только 0.13.x, 0.14.x, 15.0.x...

hlomzik
23.04.2016
09:30:01

Vladimir
23.04.2016
10:04:13
рендерю на сервере в тестах реакт компонентв в jsdom, вижу изменение в html. Меняю состояние компонента, html не меняется. Что может быть?
нашел вот такую штуку, но не помогло http://stackoverflow.com/questions/26867535/calling-setstate-in-jsdom-based-tests-causing-cannot-render-markup-in-a-worker
метод render вызывается два раза, но в доме результат первого вызова
Чё делать? На ангуляр переходить не хочется.

Михаил
23.04.2016
10:22:55
/stat@comstatbot

Google

Aleksei
23.04.2016
10:49:42
/stat@comstatbot

Alexander
23.04.2016
11:15:04
/dispatch

Aleksei
23.04.2016
11:24:01
/dispatch

trump ? trump ? hillary
23.04.2016
11:27:58
/angular_js

Vasiliy
23.04.2016
11:30:23
/hooyach

Nikita
23.04.2016
11:31:11
/angular_js