Я хочу добавить тег <p>
в ExtendedComponent
, позвонив по телефону super.render()
. Проблема в том, что я не знаю, можно ли изменить уже определенный объект jsx. Идеально было бы просто написать parentTemplate + <p>Some paragraph</p>
, но это не сработает.Как связать объекты React JSX
class BaseComponent extends React.Component {
get title() {
return 'I am base component';
}
render() {
return <h1>Hello {this.title}</h1>;
}
}
class ExtendedComponent extends BaseComponent {
get title() {
return 'I am extended component';
}
render() {
var parentTemplate = super.render();
// append <p>Some paragraph</p> to parentTemplate
return parentTemplate;
}
}
ReactDOM.render(
<ExtendedComponent />,
document.getElementById('test')
);
Из любопытства, почему этот шаблон? Почему не только два компонента, где один обертывает другой внутри 'render'? – azium
Это выглядит более естественным для меня, особенно когда я хотел бы настроить как рендер, так и другой метод в дочернем компоненте. В этом случае я чувствую, что мне нужно будет сначала расширить компонент, чтобы настроить какой-то метод, а затем обернуть его другим компонентом в методе визуализации, чтобы добавить больше html. Мой метод убил бы двух птиц одним камнем. – klis87
Если вы можете заставить его работать на вас, я думаю, это прекрасно, однако вы не увидите это очень часто в коде React. Наследование - это боль для поддержания, и с такими вещами, как компоненты более высокого порядка, состав компонентов легко достичь. Если вы хотите отказаться от модели наследования, я с радостью дам вам ответ. – azium