Я пытаюсь создать компонент многократного использования диаграммы, но я не могу обернуть вокруг него мозг.Присоединение к компоненту
Идея заключается в том, чтобы повторно использовать следующий SVG с помощью реакции (давайте назовем его «Топоры»), вместе с некоторыми функциональными возможностями и государства, как ширина и высота, данные → отображения координат и так далее:
<svg width={...} height={...}>
<g ref="area" transform={...}>
{chartElements}
</g>
<g ref="xAxis">...</g>
<g ref="yAxis">...</g>
</svg>
Тогда Я бы использовал этот SVG и состояние для нескольких компонентов диаграммы.
способов сделать это может быть
Make Топоры компонент, используйте
this.props.children
вместоchartElements
, и определить компонент диаграммы следующим образом:render: function() { return ( <Axes ref="axes" {...this.props}> {this.props.data.map(function(d) { return <rect x={this.refs.axes.state.xMap(d)} /> })} </Axes> ) }
Но это потребуется доступ к Опоры и состояние осей, которые мы не можем получить во время рендеринга.
Оберните функциональность в mixin и измените метод рендеринга на метод
wrapAxes(chartElements)
mixin, который возвращает выше фрагмента.Это перемешивается состояние осей и диаграмм, и требует особого внимания, поскольку каждая карта должна позвонить wrapAxes на его возвращаемом значении
Проходит компонент в качестве реквизита, который затем получить передается состояние/реквизит на рендеринг? Возможно ли это?
???
Я просто не знаю, как подойти к этому.
Что источник данных выглядит? Получается ли он один раз? Когда он устанавливается? Меняются ли данные со временем? –
данные являются подсказкой диаграммы: см. 'This.props.data' в коде –
Я не вижу родительское дочернее отношение между осями и требуемым контентом. Может быть проще сделать осей микшированием с функцией renderAxes и другими, как вы пожелаете. И в компоненте data вызовите this.renderAxes(), если необходимо, с параметрами, если это необходимо. – amankapur91