Помещение <AnotherComponent/>
в состояние не имеет смысла, поскольку это объект элемента React, который не связан с конкретным экземпляром компонента.
Доступ к дочернему состоянию в родительском компоненте нарушает инкапсуляцию и указывает на проблему проектирования.
Экземпляр компонента класса должен быть получен с помощью ссылки, и для доступа к экземпляру state
это последнее средство, которое может потребоваться для расширения сторонних компонентов, которые не обеспечивают желаемой функциональности.
Если AnotherComponent
является компонентом первого лица, он должен быть соответствующим образом спроектирован, чтобы не требовать доступа к state
извне:
render() {
return (
<div key={this.state.id}>{this.state.id}</div>
)
}
Если выходной сигнал должен быть большегибкий, он может использовать шаблон поддержки рендера:
render() {
const render = React.Children.only(children);
return (
<div key={this.state.id}>{render(this.state.id)}</div>
)
}
и используется как:
<AnotherComponent>{id => <div>{id}</div>}</AnotherComponent>