T想将一个方法分为两个,以便两个具有不同参数的方法都可以使用它。
我想做什么?
我有一个名为convert_point
的方法,该方法基于对画布的单击来获取值x
和y
,然后将其转换为x
,y
和z
值作为数组。
add_point_at = (x,y) => {
this.props.convert_point([x,y]).then(converted_point => {
let next;
let some_var = this.state.some_var;
if (some_var === undefined) {
this.method1();
next = this.add(this.props.drawings);
some_var = next.paths.length - 1;
this.setState({
some_var: some_var,draft_point: {x: x,y: y},//seems like this x and y values
needs to replaced as well...
});
} else {
next = this.props.drawings;
this.setState({
some_var: undefined,});
}
const variable = next.paths[some_var];
next_drawings = this.add_path(
next,converted_point[0],converted_point[1],converted_point[2]);
this.props.on_drawings_changed(next_drawings);
}).catch(some_method_called);
};
上面的方法接受x
和y
的值,因此基本上它是由下面的另一个函数调用的。这里的x
和y
分别是20和30,并且在this.props.convert_point
中赋予add_point_at
方法时,输出是[11.2,-13,45]
,因此基本上是{{赋予converted_point
方法的1}}是then
:
[11.2,45]
这很好。现在有一种情况,我已经拥有handle_click = (x,y) => {
this.add_point_at(x,y);
}
,x
和y
值并想调用z
方法……所以我将add_point_at
方法划分为下方:
add_point_at
因此,如果我已经具有add_point_at = (x,y]).then(this.call_another_method).catch(some_method_called);
call_another_method = (converted_point) => {
let next;
let some_var = this.state.some_var;
if (some_var === undefined) {
this.method1();
next = this.add(this.props.drawings);
some_var = next.paths.length - 1;
this.setState({
some_var: some_var,// x and y values are unknown
});
console.log("last statement in if");
} else {
next = this.props.drawings;
this.setState({
some_var: undefined,});
}
console.log("first statement after else");
const variable = next.paths[some_var];
next_drawings = this.add_path(
next,converted_point[2]);
this.props.on_drawings_changed(next_drawings);
};
,x
和y
值,则直接调用:
z
如果我只有this.call_another_method(converted_point);
和x
值,我会打电话给
y
…以便使用this.add_point_at(x,y);
方法将x
,y
转换为x
,y
,z
值。
但是在划分方法之后,它不起作用。我没有看到任何控制台错误。为了进行调试,我尝试添加上面的代码中所示的控制台语句,但未将其记录到控制台中。不知道为什么。
有人可以帮助我了解问题出在哪里吗?
编辑:我意识到问题出在拆分方法中未定义的x和y值...我如何重构该方法,以便用某些东西替换x和y值。