@react_js

Страница 846 из 5115
? ethorz
20.01.2017
06:31:30
редакс?

Danil
20.01.2017
06:31:41
Может кто-нибудь знает где подробнее почитать про это

Дак тут простая работа с ui

? ethorz
20.01.2017
06:32:03
аа

Google
Danil
20.01.2017
06:32:24
При клике на один компонент, должен поменяться другой

Kir
20.01.2017
06:32:42
Ну прокидовай пропсы, отлавливай изменения

Тебе при изменении в родительском нужно перерендерить дочерний ?

Danil
20.01.2017
06:33:50
У меня есть 2 компонента, они находятся в третьем

Kir
20.01.2017
06:33:57
нуууу

Danil
20.01.2017
06:34:06
Они не являются предками/потомками друг другу

Kir
20.01.2017
06:34:35
Parent { child - 1 child - 2 }

Danil
20.01.2017
06:34:56
Один является инпут, второй одной из кнопок, при клике на кнопку нужно изменить инпут

Vitaly
20.01.2017
06:35:08
При клике на один компонент, должен поменяться другой
Простой способ - передать из родителя функцию которая при вызове поменяет стейт в нем, если не хочешь ее каждый раз пробрасывать в глубь, то юзай контекст. Ну и ваще адовый способ - хранить рефы детей и вызывать у них методы напрямую, но это скользкая дорожка)

Danil
20.01.2017
06:35:38
Ну сейчас так попробую

Dreamerinnoise
20.01.2017
06:36:23
Kir
20.01.2017
06:36:47
при клике на кнопку ты через функцию передаешь параметры на верх, в родительском компоненте ты эти параметры принимаешь обрабатываешь и передаешь пропсами в другой дочений компонент

Danil
20.01.2017
06:37:24
Ну сейчас попробую все это сделать

Google
Maxim robox
20.01.2017
06:37:40
http://andrewhfarmer.com/component-communication/
Вроде же все забраковали использование ref?

Dreamerinnoise
20.01.2017
06:38:06
Aleksey
20.01.2017
06:39:14
ref ваще антипаттерн. если только напрямую с элементом DOM'a не работаем. на ненативные элементы его вешать точно неправильно

child -> parent реализуется через общий стейт. собственно, редакс и любые стейт хранилища для этого и делались

? ethorz
20.01.2017
06:42:10
child -> parent реализуется через общий стейт. собственно, редакс и любые стейт хранилища для этого и делались
да, я говорил про редакс, но он типа использует простой ui и нет смысла использовать стейт хранилища

значит пусть структуру делает другую

Aleksey
20.01.2017
06:43:07
ну, редакс заводить если проект еще не дозрел смысла нет. можно просто сделать общий контейнер и через него раздавать стейт и функции для его изменения в чайлдов

Vitaly
20.01.2017
06:43:13
а скиньте пожалуйста ссылку на то что "ref - это антипатерн", мне не понятно чем плохо получать компонент по ссылке

a
20.01.2017
06:46:33
ref ваще антипаттерн. если только напрямую с элементом DOM'a не работаем. на ненативные элементы его вешать точно неправильно

Aleksey
20.01.2017
06:47:12
если приходится использовать ref на кастомных элементах это говорит о том что архитектура кривая. view = render(state); с рефами ты просто пытаешься закостылить какое-то поведение

Aleksey
20.01.2017
06:48:48
кто с бэкбона переходит страдает таким подходом. там это норма

a
20.01.2017
06:49:10
да сколько уже можно )

сколько это еще протянется?

еще пару лет выдалбливать?

Google
Gordey
20.01.2017
06:50:13
дофига это еще протянется, куча крупных контор сидят с горами легаси на проектах

я уж не говорю про более мелкие

Vitaly
20.01.2017
06:52:55
ref не про DOM, findDOMNode про дом, а реф про ссылку на инстанс компонента. Возьмем к примеру draft.js У компоненты Editor куча статик методов для управления стейтами и всякие focus/blur/etc...

a
20.01.2017
06:54:35
у тебя нет "инстансов компонента"

это не ооп

это так сложно, серьезно?

у тебя этот "инстанс" живет 1/60 секунды, если у тебя такой фреймрейт, допустим

или дольше, если ты добавишь оптимизаций на willComponentUpdate

это misconception

нельзя в реакте думать "инстансами"

Aleksey
20.01.2017
06:59:10
если тебе надо залезть во внутренности чужой либы и нет другого способа как через ref - это можно понять. просто кривое API либы. но это, определенно, костыль.

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

a
20.01.2017
07:01:19
If you aren't an experienced React developer, don't use context. There is usually a better way to implement functionality just using props and state.

If you insist on using context despite these warnings, try to isolate your use of context to a small area and avoid using the context API directly when possible so that it's easier to upgrade when the API changes.

Aleksey
20.01.2017
07:03:31
с контекстом можно натерпеться. особенно тем кто с редаксом работает. по умолчанию { pure: true } в коннекте. и изменения контекста без изменений пропсов и стора не приводят к перерендеру. так-то )

так что повнимательнее. крайне занятные грабли иногда вылазят если контекст может меняться и ты на это заложился

Danil
20.01.2017
07:07:24
Не могу в родительском компоненте получить пропсы дочернего

Aleksey
20.01.2017
07:08:14
? это как ваще. родительский их в дочерний и передает

Danil
20.01.2017
07:08:32
Ну вот я их передал

Google
a
20.01.2017
07:08:36
https://twitter.com/HeemFrederic/status/817762195203309568

Danil
20.01.2017
07:08:37
А как их получать

Чтоб в методе использовать

a
20.01.2017
07:09:40
Не могу в родительском компоненте получить пропсы дочернего
вся идея реакта состоит в этом. В том, что ты не должен этого хотеть

Dreamerinnoise
20.01.2017
07:09:48
https://facebook.github.io/react/docs/refs-and-the-dom.html Кто там просил ссылку на рефы

Danil
20.01.2017
07:10:19
Метод дочернего элемента находится в родительском и в этом методе мне нужно получить пропсы

a
20.01.2017
07:10:37
https://facebook.github.io/react/docs/refs-and-the-dom.html#dont-overuse-refs

Admin
ERROR: S client not available

Aleksey
20.01.2017
07:11:38
у тебя явно в архитектуре про*бы

a
20.01.2017
07:11:49
Aleksey
20.01.2017
07:12:16
если это общий метод - выноси его как static и обращайся

а еще лучше сразу в родительском считай через него что надо и отдавай в чайлда

чайлд если не имеет своего стейта полностью зависит от пропсов родителя. ну и очень частный случай от реального DOM'a. так что все что можно посчитать в чайлде можно посчитать и в родителе, обычно

Danil
20.01.2017
07:15:05
В чайлде стэйтов нет

a
20.01.2017
07:15:38
если родительскому компоненту вдруг понадобились пропсы дочернего, который получает их из store - тогда проблема в другом месте

В чайлде стэйтов нет
тогда доступ к этим пропсам есть у родительского

Maxim robox
20.01.2017
07:21:14
А подскажите, как можно элегантно разрулить вот такой кейс: Есть реакт компонент https://github.com/seibelj/react-simple-markdown-editor Представляет собой набор кнопочек B I S H1 H2 H3 для «маркдаунизации» какой-нибудь textarea. Но с textarea он работает напрямую через DOM, минуя реакт. Требует указать element.id от textarea. Ну это ещё терпимо. Но у него прикол в том, что после клика на кнопочку, значение textarea в DOMе меняется, но событие textarea onChange не триггерится. Соответственно, если нажать на какую-нибудь кнопку, то в state ничего не запишется, пока ты сам ты вызовешь onChange (например, дописав что-нибудь ещё в textarea). Благо, что клик по кнопке переводит фокус на textarea. Поэтому я решил проблему тем, что помимо onChange повесил ещё onBlur. Работает, но чувствуется костыльность. Можно ли было поступить как-то иначе?

Aleksey
20.01.2017
07:22:38
найти нормальный editor? под маркдаун не пробовал, но, вообще такие есть

Google
Maxim robox
20.01.2017
07:23:14
найти нормальный editor? под маркдаун не пробовал, но, вообще такие есть
Пробовал. Реально не нашёл ничего, что полностью бы подходило. Это — лучшее.

Aleksey
20.01.2017
07:23:48
форкни и имплементируй. потом PR сделаешь. чсв почешешь, людям поможешь )

Danil
20.01.2017
07:24:23
Вот в общем Li дочерний получается, в метод change flag нужно получить пропсы Li countryFlag и countrName

Maxim robox
20.01.2017
07:25:30
форкни и имплементируй. потом PR сделаешь. чсв почешешь, людям поможешь )
Мне его идея работы через DOM не нравится. Так что разве что свой компонент с нуля писать. А я пока не дорос. =)

a
20.01.2017
07:27:22
написать MD-редактор - это не просто, а супер-просто. Либ, которые умеют маркдаун (и для реакта тоже) - тьма

https://github.com/acdlite/react-remarkable

как вариант

Maxim robox
20.01.2017
07:28:07
как можно писать на реакте и не верстать, я не очень понимаю.
Так вёрстка это же не только html-разметка.

Aleksey
20.01.2017
07:28:23
жуть-то какая ) не лень копипастить было? сделай массив и перебирай через .map в changeFlag сделай changeFlag(flag, country) { return { } } хэндлеры объявляй через onClick={this.changeFlag(flag, country)}

Maxim robox
20.01.2017
07:28:24
https://github.com/acdlite/react-remarkable
Это для рендеринга. Это другая задача.

a
20.01.2017
07:29:35
тебе что именно надо?

Aleksey
20.01.2017
07:30:05
жуть-то какая ) не лень копипастить было? сделай массив и перебирай через .map в changeFlag сделай changeFlag(flag, country) { return { } } хэндлеры объявляй через onClick={this.changeFlag(flag, country)}
а то ты сначала туда пропсы передаешь, а потом их через, реально, анус, пытаешься достать. через e.target.innerHTML аж )

Maxim robox
20.01.2017
07:30:29
какая у тебя задача?
Редактор markdown. Просто набор кнопочек и textarea. Без WYSIWYG.

a
20.01.2017
07:30:30
редакторов MD настолько дофига и они все такие разные

что ты хочешь видеть? Тебе нужен превью?

Maxim robox
20.01.2017
07:31:18
что ты хочешь видеть? Тебе нужен превью?
Наоборот. Без него. Максимально простой. Кнопки и сырой текст.

Aleksey
20.01.2017
07:31:21
поправочка changeFlag(flag, country) { return { } } читать как changeFlag(flag, country) { return () => { } }

Alex
20.01.2017
07:31:51
всем привет, кто может помочь с reselect?

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