У меня есть компонент меню, который должен динамически загружать элемент в другом компоненте контейнера. Однако дочерние элементы никогда не отображаются.
App.js
import React, { Component } from 'react';
import './App.css';
import Menu from './components/navigation/Menu';
import Header from './components/navigation/Header';
import Container from './components/navigation/Container';
class App extends Component {
render() {
return (
<div className="App" >
<Header />
<Menu OnMenuChange={(appName) => { this.setState({ currentApp: appName }) }} />
<Container App={this.state.currentApp}/>
</div>
);
}
}
export default App;
Контейнер.js
import React from 'react';
import './container.css';
import { MyApp } from '../../apps';
class Container extends React.Component {
render() {
return (
<div className="container">
{ this.props.App ? <this.props.App /> : null }
</div>
);
}
}
export default Container;
Когда пользователь щелкает пункт меню, он запускает OnMenuChange на уровне app.js, который обновляет компонент Container. Который затем помещает элемент "MyApp" в контейнер div...
Но конструктор и метод рендеринга никогда не вызываются в компоненте MyApp.
Обновить Я переместил список пунктов меню в файл App.js:
let navGroups = [
{
links: [
{
key: "myApp",
name: "My App",
type: MyApp,
}
]
}
];
Затем передайте этот список в меню, которое теперь передает «тип», а не имя. Это работает лучше, так как имя теперь может содержать пробелы.