@react_js

Страница 131 из 5115
Anatolii
27.05.2016
05:36:49
ну по сути проект уже есть, поэтому переписать его под редукс думаю будет проще, главное понять ))

может есть возможно проконтролировать или помочь?

правильно архитектуру нарисовать

Алексей
27.05.2016
05:38:59
Не знаю, что за проект, но попробовать можно будет)

Google
anoru
27.05.2016
05:56:37
смотри сразу mobx. Тем более недавно там вышел очень крупный апдейт

Всем привет! Кто-нибудь может мне помочь разобраться с Redux - капец какой-то, ни как не могу въехать

с redux в последствие одна боль и страдание )

Во первых чистый redux еще больше требует кода, во вторых в redux ducks можно смело дропать константы и сэкономить еще несколько строк кода. Но проблема остается. Вот простейший пример - представь тебе надо открыть хеадер и закрыть хеадер. Ты не можешь это хранить в стейте,т.к. данные требуются разным компонентам. И вот ты пишешь action creator'ы на открытие, на закрытие хедера или toggle, потом слушаешь это в редюсере и меняешь showHeader. далее валидириуешь все экшены в proptypes, достаешь их из this.props. В итоге имеет 20-30 строк кода на 2 строки действия

через полгода работы с редаксом поймешь :D

>далее забыл еще про константы. Тогда точно 20 строк выходит

Alex
27.05.2016
06:08:23
смотри сразу mobx. Тем более недавно там вышел очень крупный апдейт
а для полного новичка подойдет ? или лучше с redux'а начать ?

anoru
27.05.2016
06:08:33
mobx намного проще redux'а

у него только один минус - он стал популярен не так давно и нет норм бойлерплейтов с серверным рендерингом и прочими плюшками (только самому писать).

anoru
27.05.2016
06:12:46
возможно и не потребуется никогда)

Антон
27.05.2016
06:16:21
мне вот показалось, что mobx это какой-то разворот к mvc или чему-то подобному

нет? действительно показалось?

Google
Tim
27.05.2016
06:16:28
mobx + typescript + vscode - норм заходит)

mobx - позволяет делать биндинг компонент к данным. Каким образом ты будешь строить само приложение уже зависит от тебя. Это может быть mvvm, может быть flux/redux/elm или что тебе задумается

Чтобы перерисовать компоненту с новыми данными: подход реакта this.setState({value: newValue}) подход mobx+react value = newValue

Anatolii
27.05.2016
06:48:07
ну не наверно еще и на изучение mobx меня не хватит

хорошо бы redux без болезненно прикрутить, либо отказаться от этой затеи и прокидывать пропсы ))

Dmitry
27.05.2016
06:51:00
Кмк лучше не отказываться

lolkrp
27.05.2016
06:52:08
такой вопрос <img src={'./images/icons/' + props.icon + '.svg'}> вот если у меня компонента тянет иконки таким образом, можно ли как-то в вэбпаке описать что бы он их находил и тянул в dist?

или я не правильно подхожу к решению?

Алексей
27.05.2016
06:55:19
что бы иконки подтягивались, нужен же file-loader для вебпака

а там можно указать директорию

lolkrp
27.05.2016
06:57:22
ну да, только я так понял что он срабатывает для стилей или для статично указаных путей

Anatolii
27.05.2016
07:09:27
ой а разве так можно?

lolkrp
27.05.2016
07:11:23
ой а разве так можно?
я вот уже начал сомневатся

Alex
27.05.2016
07:12:33
даже корейцы в чате )

Denis
27.05.2016
07:20:25
Есть у кого опыт интеграции управления с клавиатуры в приложение на реакте? Примерно такое https://github.com/artpi/Reactive-Compass

lolkrp
27.05.2016
07:25:02
Я у себя делал в вебпаке алиасы $img для такой статики, т.е. будет <img src={`$img/${props.icon}.svg`} />
хм.. не понимаю как это реализовать, в смысле что такое алиасы для вэбпака

hlomzik
27.05.2016
07:25:21
webpack resolve alias

Ну и лоадеры для svg надо прикрутить

Я пользовался каким-то react-svg или что-то вроде, оно инлайнило свг в компонент, вроде было норм) но мало пробовал

Google
hlomzik
27.05.2016
07:26:32
Ну и можно просто file-loader

lolkrp
27.05.2016
07:27:06
ага ок посмотрю, спс

Leonid
27.05.2016
07:27:10
Можно иконки складывать внутрь папки компонента, писать: <img src={require('./assets/icons/' + props.icon + '.svg')}> file-loader сложит куда надо и вставит правильный путь

Но удобнее для иконок запилить отделный компонент, как мне кажется

Victor
27.05.2016
07:28:54
парни, пробую на 'whatwg-fetch' перейти, он почему то GET запросы не отправляет... return (dispatch) => fetch(API_URL, { method: 'GET', body: query }) POST, PATH выполняются, а GET нет, почему?

hlomzik
27.05.2016
07:29:25
Их вообще в network нет?

Victor
27.05.2016
07:29:52
нет, GET запросы вообще не появляются

Dmitry
27.05.2016
07:30:21
+1, у себя сделал компонент Icon, собрал свг спрайт из файликов и заинлайнил в начале body, а дальше через use вызывать

Leonid
27.05.2016
07:34:24
Не надо инлайнить внутрь body, если это не SPA :) Кэш же

Лучше тогда через url-loader завернуть их в бандл

Dmitry
27.05.2016
07:35:47
Ну у меня spa :) Есть еще вариант юзать use со ссылкой на файл спрайта, но там нужен полифил

Leonid
27.05.2016
07:36:49
Полифил для IE да, но он вроде маленький и срабатывает только в IE

Опять же с инлайном в body — html не всегда кэшируется, плюс меняется гет-параметр подключения стиля/скрипта для обхода кэша и весь спрайт тоже грузится заново

Dmitry
27.05.2016
07:46:03
Мне стыдно, но я пока впилил сборку спрайта галпом и подключил файлик хардкодом :)

Alexander
27.05.2016
08:20:33
было бы круто иметь чатам команду по которой можно например FAQ глянуть

localvoid
27.05.2016
08:20:44
А если в mobx фильтровать лист из N элементов в рендере, то сколько слушателей будет неявно зарегистрировано? Например отображается по 10 элементов из 10000.

Google
S
27.05.2016
08:25:45
S
27.05.2016
08:30:47
Шарить состояние UI-компонента? Я в редаксе только бизнес-данные храню

Шарить состояние UI-компонента? Я в редаксе только бизнес-данные храню
Например нормализованный пользователь, чтобы аватарка во всех компонентах одна и та же была

Алексей
27.05.2016
08:32:28
Шарить состояние UI-компонента? Я в редаксе только бизнес-данные храню
если где то в другом месте есть кнопка 'скрыть хедер'

Admin
ERROR: S client not available

Nikita
27.05.2016
08:33:25
а если сегодня нет, а завтра есть?)

localvoid
27.05.2016
08:39:05
Для 10к элементов используй react-list, а то браузер сдохнет
отображаться то будет мало элементов после фильтрации, не больше 10, но вот mobx придётся зарегистрировать N+1 слушателей, и каждый раз после инвалидации канселить всех слушателей в текущем контексте и на рендере опять создавать N+1 слушателей и регистрировать.

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

Nikita
27.05.2016
08:40:56
а в родителе не вариант подписку сделать?)

localvoid
27.05.2016
08:41:55
так в родителе и будет делаться подписка

Nikita
27.05.2016
08:47:08
хотя, если использовать react-list, или аналоги, можно делать подписку и в дочерних элементах. Они же по 10-20шт будут рендриться

localvoid
27.05.2016
08:47:38
а толку, если от изменения какого-то свойство может получиться что теперь нужно отобразить элемент после фильтрации

традиционно большинство проблем с производительностью в сложных приложениях на всяких дататэйблах, и традиционно системы с неявными подписками на них сосут

Nikita
27.05.2016
08:52:02
любой инструмент надо использовать прямыми руками)

localvoid
27.05.2016
08:52:51
ну так я и спрашиваю, как же такой типичный юзкэйс решать в mobx :)

Алексей
27.05.2016
09:16:52
Если у меня есть компонент, который обернут в connect, я этот connect получаю через refs в родительском компоненте. Я как то могу достучаться до самого компонента, который обернут в connect?

Google
Алексей
27.05.2016
09:29:34
Нашел

При коннекте компонента надо в объекте options передать {withRef: true}, тогда можно получить нужный коммент методом getWrappedInstance

Nikita
27.05.2016
09:33:50
Народ, что вы думаете про использование контекстов для меню? Вот у меня есть выпадающий список, у него есть разделители и вообще произвольная структура. Нормально, если SelectList будет передавать свой контекст в SelectListItem, чтобы установить текущий активный элемент, например, по ховеру?

Dmitry
27.05.2016
09:35:28
Может есть какое-то элегантное решение без использования редакс стейта? У меня есть компонент лейаута, которому можно передать хтмл для попапа. Они все отрисуются в доме обернув себя в оверлей. И внутри самого попапа мне нужно по скроллу менять его состояние, при этом оверфлоу скролл висит на оверлее и соответственно обработчик должен висеть на нем.

Nikita
27.05.2016
09:40:56
Подразумевается передача функции в компонент?
да и активный индекс элемента, например

<SelectList start={0} end={2}> <div> <SelectListItem index={0} /> <SelectListItem index={1} /> <SelectListItem index={2} /> </div> </SelectList>

вот так примерно выглядит API компонентов этих

Andrey
27.05.2016
09:46:07
Мы используем похожий подход, но тут спорно, хорошо ли это

Nikita
27.05.2016
09:46:41
согласен, и тут вопрос - какие еще есть варианты?)

Vladimir
27.05.2016
09:57:06
<SelectList start={0} end={2}> <SelectListItem/> <SelectListItem /> <SelectListItem/> </SelectList> SelectList::render(){ ... {props.children.map((c,i) => React.cloneElement(c, {index: i, isSelected: i==this.state.selected}))} ... }

Nikita
27.05.2016
10:09:39
неа, я хочу внутри произвольную верстку

разделители, футер, например

Vladimir
27.05.2016
10:13:02
<SelectList start={0} end={2}> <div> <SelectListItem isSelected={this.state.selectedId==1} onClick={e=>this.setState({selectedId: 1})}/> <SelectListItem isSelected={this.state.selectedId==2} onClick={e=>this.setState({selectedId: 2})}/> </div> </SelectList>

и стало быть юзаешь компонент-враппер со стейтом:)

Nikita
27.05.2016
10:14:18
а это уже слишком явно :(

Andrey
27.05.2016
10:14:30
можно биндить тогда функцию и подставлять первый аргумент )

Nikolay
27.05.2016
10:40:58
не вижу ничего криминального в связывании компонента с дочерними элементами через контекст

код получится явнее и прямолинейнее

Nikita
27.05.2016
10:44:40
API получается чище внешнее. Но внутри наоборот запутаннее и неявнее все становится)

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