copal: вы опять погнали какую-то отсебятину. Кто «говорит что обращаться к чилдрен и работать вообще с Чилдрен, это плохо.»? Я не знаю, как до вас донести, что children это такое же свойство, как и onClick, только передаётся не внутри открывающего тега, а между открывающим и закрывающим. И работать с ним ничем не хуже чем с onClick. Но и не лучше, вы же не будете из onClick и onSubmit какую-то структуру создать, и не будете ожидать многого от добавления к ним свойств.
По поводу загрузки, вы реализовали что-нибудь подомное на реакте? Я вот здесь я тренировался с промисами и загрузкой. И с redux, но тут в принципе не важно, умный компонент только один. Всё происходит точно так, как я описал. Вы можете продемонстрировать, где там ошибка? Или свой пример показать, где «вся работа с загрузкой вынесена в сторы»?
copal: нет, нет и нет, вы по-прежнему считаете что children это то же самое, что и document.children. Это просто свойство, которое передаётся компоненту, нет никаких отношений потомок-родитель. По умолчанию компонент его вообще не использует, нужно явно указать {this.props.children} в render. React.Children это не какой механизм, а просто набор методов для работы с этим свойством. Да, поначалу я думал, что вы посредством элемента хотите изменить компонент, теперь вижу, что просто хотите вручную заменить свойство в элементе. Это работать будет. Но зачем это делать? Чего вы хотите добиться?
Что за «неправильный стиль», «плохо» и является «плохим тоном в реакт»? Вопрос в том, у вас что, получилось это заставить работать? То есть понятно, что свойство вы изменить смогли, но с какой целью, какой результат?
«Если Вы будите делать запросы в самом компоненте, то в renderToString попадет чистая строка. То есть рендер происходит до того как что-то загрузится.» - реакт на это и рассчитан, на динамически изменяющиеся данные. Происходит инициализация, отправляется запрос, вызывается рендер, полученный элемент вставляется в dom, приходят данные, вызывается рендер, высчитывается разница с предыдущим вариантом, разница вставляется в dom. Store в этой схеме не меняет ничего, он просто единый разделяемый объект для хранения state, диспечеры/редьюсеры - это механизм взаимодействия компонентов со store, сами они ничего не инициируют.
copal: И вот скажите, просто ради интереса, как в «React.Children, this.children.props.method(value), value = this.children.props.value» я должен был углядеть «this.props.children.props.style и React.cloneElement(React.Children.only(this.props.children), {...})»
copal: когда отвечал, в голове крутилось this.props.children.onClick = handler; из другого вашего вопроса, не обратил внимание, что тут немного по-другому.
В данном случае React.cloneElement является чем-то вроде функции-декоратора, создавая новый элемент на основе данного элемента. Свойства берутся из исходного, модифицируются/фильтруются/добавляются и вставляются в новый элемент.
Я не понимаю сути вопроса, какой результат вы хотите получить. Кажется, вы пытаетесь в метод render впихнуть какую-то логику. Теоретически, возможно добиться того, что это будет работать. Но логика должна строиться на компонентах, а не на элементах.
copal: ваша манера общения совершенно очаровательна. Вы вообще не отвечаете на вопросы, вот абсолютно ни на один, начиная с самого первого - если в реакте не делают запросы из компонентов, то откуда по-вашему в реакте делают запросы? Впрочем, ответ мне уже в целом ясен - вы не знаете, потому что в реакте не разбираетесь, а ваше заявление - это просто наброс на вентилятор.
Непонятно чем являются ваши комментарии, то ли убогими попытками оскорбления, то ли бредовыми заявлениями, то ли идиотскими вопросами, соответственно, не очень понятно, на какой ответ вы рассчитываете. Забавно, что даже уточнить не получится, ведь на вопросы вы не отвечаете.
Пожалуй, в последний раз попытаюсь ответить.
Нет, это не нормально, и так делать нельзя, не в том смысле, что так не делают, а в том, что ничего не получится, то есть вообще. Вы почему-то, видимо, из-за xml-синтаксиса и свойства children, решили, что в реатке есть аналог DOM, некий Component Object Model. А этого нет даже близко. Вот максимально упрощенный пример. Вы хотите сделать примерно как в DOM делается document.children[0].onclick = ... и иметь какое-то подобие document.appendChild. В реакте же компоненты - это функции конструкторы, а элементы, this.props.children - создаваемые ими объекты. Как можно повлиять на конструктор, меняя созданный им объект?
Первое, что написано про реакт - JUST THE UI Lots of people use React as the V in MVC. Он построен не на обожаемой вами архитектуре mvc, а на компонентной архитектуре. Компоненты инкапсулируют всё необходимое для их работы - состояние, методы. При создании компоненты практически никак не связаны друг с другом, слабая связь возникает в момент использования. Компонент А может изменить состояние компонента Б, только если компонент Б передаст свой предназначенный для этого метод. Для создания структуры в простых случах можно использовать компоненты, например react-router, в более сложных лучше использовать flux/redux. Если нужен mvc, то использовать react вместо с angular, backbone и т.п.
Резюмируя, впечатление о реакте у вас сложилось в корне неверное, а ваше самомнение слишком раздуто.
copal: надо было покороче написать: «да, я в танке, под люком, могу только пи*деть», а не приплетать react-native и фантазировать о каком-то движении через дом. Последний вопрос: скажите, вы правда всерьёз считаете, что хотя бы базовый минимум в реактe понимаете? Хотя бы метод render?
copal: ааа, я понял откуда взялось магическое число 60 раз в секунду - это фпс, по типу requestAnimationFrame. Осталось понять, откуда взялась фантазия о связи фпс и метода render. Вам это по ночам снится, или днём грезится, после приёма каких-нибудь веществ? Или это какое-то откровение свыше было, какое обычно у мессий бывает? jsbin.com/makuso/edit?js,output - первый попавшийся пример dragable с добавленным счетчиком, выводимым в консоль. Render вызывается при начале перетаскивания и при завершении. Единственный случай частого вызова - при перетаскивании элемента с отображением координат.
Десятиуровневая вложенность ничего не изменит, если ваши догматы не позволяют в это поверить, можете потрудиться, самостоятельно добавить компонентов и убедиться.
Или вам это не по силам, и вы только пи*деть из танка способны, накрывшись люком?
copal: угу, нет бога кроме mvc и angular пророк его, объявлен джихад доказать всему миру, что реакт говно. Удачи, мессия, только вот поближе к реальности надо быть, а не заявлять в ответ на вопрос, почему при скролле должен происходить рендер и почему при рендере должны происходить запросы, что я "сам не понимаю".
copal: здорова вам наверное, никогда не скучаете, всегда можно самому с собой пообщаться. Я даже как-то лишним себя почувствовал в вашем диалоге с самим собой. В общем, продолжайте, не буду мешать.
copal: это не вопросы, а какой-то, извините, бред воспалённого сознания. При каком скролле должен происходить рендер? Вообще, конечно, могу согласиться, что рендер в реакте происходит на каждый чих, но при чем тут запросы, которые выполняются из абсолютно других методов?
А из вопросов я понял, что с компонентами реакта вы пытаетесь работать как с элементами дом, а это... как пиво вилкой пить.
По поводу загрузки, вы реализовали что-нибудь подомное на реакте? Я вот здесь я тренировался с промисами и загрузкой. И с redux, но тут в принципе не важно, умный компонент только один. Всё происходит точно так, как я описал. Вы можете продемонстрировать, где там ошибка? Или свой пример показать, где «вся работа с загрузкой вынесена в сторы»?