Реагировать на разделение презентации / контейнера - PullRequest
2 голосов
/ 26 апреля 2019

Хорошо, я пытаюсь создать проект, используя дизайн контейнеров / презентационных компонентов, но мне не хватает какой-то информации или знаний.

Я пытаюсь сделать компонент на основе его родителя.тип компонента:

У меня есть этот маршрут: http://localhost:3000/:componentId

componentId имеет внутреннюю модель с типом (HTML или Text).

ИтакЯ думаю, я мог бы создать Component со следующей структурой:

page.js :

const HtmlPage = props => {
    return <Fragment>My HTML Component</Fragment>
};

const TextPage = props => {
    return <Fragment>My Text Component</Fragment>
};

// material-ui styles
const HtmlComponent = withStyles(styles)(HtmlPage);
const TextComponent = withStyles(styles)(TextPage);

export {
    HtmlComponent,
    TextComponent
};

index.js :

import {
    HtmlComponent as HtmlPage,
    TextComponent as TextPage
} from './page';

class Component extends React.Component {
    constructor(props) {
        super(props);
        this.state = { componentType: 'HTML' };
    }

    componentDidMount() {
        // Retrieve model's type from backend
    }

    render() {
        switch(this.state.componentType) {
            case 'HTML':
                return <HtmlPage />;
            case 'Text':
                return <TextPage />;
        }
    }
}

export default Component;

Итак, мой вопрос: правильно ли сформирован этот компонент, или я должен создать несколько компонентов для HtmlPage и TextPage, а затем импортировать их на родительский элемент Component?

Любой комментарий приветствуется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...