my function to generate path:
const getPath = (source, target) => {
// console.log('path', path.moveTo(source.x, source.y));
const path = d3.path()
.moveTo(source.x, source.y)
.lineTo(target.x, source.y)
.lineTo(target.x, target.y)
.toString();
// console.log('path', path);
return path;
}
d3 import statement:
import * as d3 from "d3";
source and target structure:
{
x: Number,
y: Number
}
why is moveTo undefined what am i doing wrong? i'm on react btw.
CodePudding user response:
moveTo does not return anything, so its return value is undefined. It does not return the path, so you cannot do method chaining here. You can see this in the source code for moveTo:
moveTo: function(x, y) {
this._ = "M" (this._x0 = this._x1 = x) "," (this._y0 = this._y1 = y);
},
You can adjust your code to this and it should work:
const getPath = (source, target) => {
const path = d3.path();
path.moveTo(source.x, source.y);
path.lineTo(target.x, source.y);
path.lineTo(target.x, target.y);
return path.toString();
}

