copal
@copal
𝄞 ...оооо baby

Как победить ReactDOM.findDOMNode(child) в React.Children.forEach?

Часа два не могу решить эту проблему, так как в гугле есть примеры, но они у меня почему-то не работают.
ReactDOM.findDOMNode(child) в React.Children.forEach говорит что child должен быть инстенсом компонента... Вот пример https://jsbin.com/suhutulili/edit?js,console
  • Вопрос задан
  • 1649 просмотров
Решения вопроса 1
Не не не, тут не много не такая логика. children - это компоненты, не установленные в ДОМ ноды. Можно сделать что-то вроде такого https://jsbin.com/casomojovo/edit?js,console. И уже через refs вы можете вытащить DOMNode

class Container extends React.Component {
   constructor(props){
     super(props);
   }
   
   componentDidMount(){
     console.log('componentDidMount', Object.keys(this.refs));
     // outputs: [ 'ch0', 'ch1' ]
   }
   
   render(){
     
     return (
       <div>{React.Children.map(this.props.children, (ch, i) => React.cloneElement(ch, { ref: 'ch' + i }))}</div>
     );
   }
}

ReactDOM.render(
  <Container>
    <div>hello</div>
    <div>world</div>
  </Container>, 
  document.querySelector('.main-container')
);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы