Сильно не вникал, но кратко, чтобы передать один компонент в дргой и там его отрисовать, следует передавать компонент через функцию и вызывать её там, где надо отобразить.
Там где отрисовывается Parent
let component = () => ( <ComponentChild /> );
...
<Parent child={ component } />
Внутри Parent в методе
render(){
return(
{ this.props.child && this.props.child() }
)
}
Как-то так. Таким образом определять какой компонент будет отрисовываться можно где-то вверху дерева в умном компоненте, а вниз глупым компонентам-отобразителям передавать его как props через параметр-переменную-функцию.