Я хочу визуализировать массив компонентов React с помощью Konva Js, не зная точно, какой объект я рисую в данный момент. Чтобы быть более точным c, вот мой код:
Один из компонентов React, который я хочу визуализировать, настенный. js:
class CWall extends React.Component {
render() {
return (
<React.Fragment>
<Rect /*some props*/></Rect>
<Transformer /*some props*/></Transformer>
</React.Fragment>
)
}
}
В другом компоненте я создаю CWall при нажатии кнопки, planmenu. js:
class PlanMenu extends React.Component {
render() {
...
return (
...
<button type="button"
onClick={() => { addObject(
new CWall({
x: 100,
y: 100,
length: 200
}))}}>Wall
</button>
)
}
}
Созданные объекты передаются компоненту, который должен их отображать, planbuilder. js:
import CWall from './objects/wall'
class PlanBuilder extends React.Component {
render() {
const { objects } = this.props
return (
<Stage>
<Layer>
{
objects.map(function(object) {
var ObjectType = object.constructor.name;
/* the following line gives an error to me */
return <ObjectType {...object.props} key={object.id} />;
}, this)
}
</Layer>
</Stage>
);
}
}
В указанной строке выдается ошибка:
у конвы нет узла с типом CWall
Однако, если я отрисовываю один CWall напрямую, я получаю его на экране, как и ожидалось. Это кажется мне доказательством того, что konva способна визуализировать объекты CWall:
class PlanBuilder extends React.Component {
render() {
const { objects } = this.props
return (
<Stage>
<Layer>
<CWall x={100} y={100} length={200} />
</Layer>
</Stage>
);
}
}
Итак, мой вопрос: как правильно отображать объекты, не зная их точных типов? Заранее спасибо.