Ninja Mate: пример про другое, сравнение refs и findDOMNode. Выше я не совсем правильно написал, истанс - это отрендеренный компонент, экземпляр класса, а в refs находятся DOM-элементы инстанса. Не думаю, что непосредственно с инстансом стоит работать.
Делать нужно практически как Никита Гущин написал в ответе, только без findDOMNode - пример
Ninja Mate: мне с d3 не приходилось работать, но думаю, при удалении контейнера сборщик мусора подчистит то, что он содержал, а внешние нужно удалять вручную из componentWillUnmount. Вообще, внешние совсем делать не стоит.
Никита Гущин: а зачем ReactDOM.findDOMNode(this.refs.container)? this.refs же и так инстансы компонентов содержат - DOMNode, которые ReactDOM.render создаёт.
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), {...})»