Сбой d3js, когда я передаю ссылку на d3.select () - PullRequest
0 голосов
/ 10 июня 2019

Я пытаюсь построить графический компонент в реакции с 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 Мне нужно вмешательство Босток на этом.

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