Я пытаюсь построить графический компонент в реакции с d3. И ради любви к Богу, я не мог понять, почему это происходит сбой, когда я передаю ссылку, имя селектора или идентификатор в d3.select, когда предыдущая строка кода успешно console.log-s и все вышеперечисленное случаи.
Я попытался связать функцию и не связать функцию. Я пробовал другой контейнер HTML для привязки. Я вызываю функцию построения графика в ComponentDidMount.
Вот линия виновника: d3.select('g')
Оба предыдущих файла console.log предсказуемо возвращают элемент, к которому я пытаюсь привязать график (полная функция построения ниже).
console.log('right before d3 select ref:', this.refs.gelement)
console.log('right before d3 select svg', d3.select('g'))
d3.select('g')
.datum(dataSeries)
.call(chartitself);
Вот полная функция и сам элемент
<div>
<svg>
<g ref="gelement">
</g>
</svg>
</div>
import * as d3 from 'd3';
import * as fc from 'd3fc';
plot_d3fc_x(data) {
var dataSeries = data
var yExtent = fc.extentLinear()
.accessors([function(d) {
// console.log(d.y)
return d.y;
}])
.pad([0, 0.2])
.include([0]);
var xExtent = fc.extentLinear()
.accessors([function(d) {
// console.log(d.x)
return d.x;
}])
var line = fc.seriesSvgLine()
.crossValue(function(d) {
return d.x;
})
.mainValue(function(d) {
return d.y;
})
var chartitself = fc.chartSvgCartesian(
d3.scaleLinear(),
d3.scaleLinear())
.yDomain(yExtent(data))
.xDomain(xExtent(data))
.yOrient('left')
.plotArea(line);
console.log('right before d3 select ref:', this.refs.gelement)
console.log('right before d3 select svg', d3.select('g'))
d3.select('g')
.datum(dataSeries)
.call(chartitself);
}
С самими данными и анализом все в порядке, и я полностью убежден, что проблема в d3.select. Ошибка, которую я получаю при вызове plot_d3fc_x: nodes[i].requestRedraw is not a function
Мне нужно вмешательство Босток на этом.