首页 > 解决方案 > 这个 handleChange 方法在做什么?

问题描述

handleChange(e) {
        const index = Number(e.target.id.substring(e.target.id.length - 1, 19));
        const copyFormArray = JSON.parse(JSON.stringify(this.state.educationData));
        copyFormArray[index][e.target.name] = e.target.value;
        this.setState({
            educationData: copyFormArray,
        });
    };

这个 handleChange 方法有什么作用,特别是在 index 变量中?我了解 substring 和 Number 构造函数的作用,但第二个参数我找不到这个特定问题的任何答案,尽管它按预期工作。

标签: javascriptreactjs

解决方案


子字符串以一种棘手的方式工作,如果第二个参数(在您的情况下为 19)小于第一个参数 - 那么它们将被“交换”,如果不是 - 它只会在索引(参数 1 和参数 2)之间获取文本。

所以比如说我有一个字符串:

var x = "aaaaa-5";

如果我会写:

x.substring(x.length-1)

它会给我“5”。

然后,如果我会写:

x.substring(3,6)

它会给我“aa-”

但是,如果我会写:

x.substring(6,3)

这将与之前的调用完全相同 - “aa-”

所以子字符串的内部逻辑是这样的:

function substring(start,end) {
 if(start > end) {
    var buf = end;
    end = start;
    start = buf;
 }
 //... other logic
}

推荐阅读