如何在反应中重构该方法?

T想将一个方法分为两个,以便两个具有不同参数的方法都可以使用它。

我想做什么?

我有一个名为convert_point的方法,该方法基于对画布的单击来获取值xy,然后将其转换为xyz值作为数组。

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);
 };

上面的方法接受xy的值,因此基本上它是由下面的另一个函数调用的。这里的xy分别是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); } xy值并想调用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); }; xy值,则直接调用:

z

如果我只有this.call_another_method(converted_point); x值,我会打电话给

y

…以便使用this.add_point_at(x,y); 方法将xy转换为xyz值。

但是在划分方法之后,它不起作用。我没有看到任何控制台错误。为了进行调试,我尝试添加上面的代码中所示的控制台语句,但未将其记录到控制台中。不知道为什么。

有人可以帮助我了解问题出在哪里吗?

编辑:我意识到问题出在拆分方法中未定义的x和y值...我如何重构该方法,以便用某些东西替换x和y值。

caililicailili 回答:如何在反应中重构该方法?

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3156576.html

大家都在问