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值被替换为其他值