Javascript 如何在react中重构方法?
我不想把一个方法一分为二,这样它就可以被两个参数不同的方法使用 我想做什么 我有一个名为Javascript 如何在react中重构方法?,javascript,reactjs,refactoring,Javascript,Reactjs,Refactoring,我不想把一个方法一分为二,这样它就可以被两个参数不同的方法使用 我想做什么 我有一个名为convert\u 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_
convert\u 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,当给这个.props.convert\u point
方法add\u point\u at
时,输出是说[11.2,-13,45]
,所以基本上给这个的转换点
方法是[11.2,-13,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) => {
this.props.convert_point([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,
draft_point: {x: x, y: y},// 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[0], converted_point[1],
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);
…以便使用this.props.convert\u point
方法将x
,y
,z
值转换为x
,y
但是在划分方法之后,它就不起作用了。我没有看到任何控制台错误。为了调试,我尝试添加上面代码中所示的控制台语句,但它没有记录到控制台。不知道为什么
有人能帮我理解问题出在哪里吗
编辑:我意识到问题在于分割方法中未定义的x和y值……我如何重构此方法,以使x和y值被替换为其他值