当从数组呈现 ReactJS 组件时,组件的 onChange 函数被传递最后一个参数值

Component's onChange function being passed the last parameter value when the ReactJS components are rendered from an array

我有一组对象,我基于这些对象生成了一组 ReactJS 组件。

然后在渲染方法中渲染这些。简而言之代码如下,

获取组件() :

f = [{name: 'Input1', colSpan: 5}, {name: 'Input2', colSpan: 10}];
var renderedComponents = [];

for(i=0;i < f.length;i++){

 var name = f.name;
 var colSpan = f.colSpan;

 renderedComponents.push(
      <Col span={colSpan} key={i} style={{marginRight: 5}}>
        <FormItem {...fieldbounds} {...fieldparams}>
          <Input
          onChange={(e)=> {this.inputChange(name, e)}}
          />
        </FormItem>
      </Col>
    );
  }

return renderedComponents;

onChange 处理程序:

inputChange = (n,e) => {
  console.log(n);
}

渲染():

render(){
    return(<div>{this.getComponents()}</div>);
}

组件呈现时,我得到两个文本框。但是当更改文本框中的值时,即使我更改了 Input1.

,我也会得到 'Input2' 的控制台日志

看起来 name 属性在渲染时被赋予了 f 数组的最后一个值。

当前行为:

  • Changing text in Input1 has a console log of 'Input2'
  • Changing text in Input2 has a console log of 'Input2'

预期行为:

  • Changing text in Input1 has a console log of 'Input1'
  • Changing text in Input2 has a console log of 'Input2'

用以下代码替换 onChange 中的粗箭头函数时,我得到了预期的行为。

onChange={this.inputChange.bind(this, name)}

谁能帮我理解为什么 .bind 有效而粗箭头功能无效?