从动态添加的输入文本字段中获取值

时间:2016-03-31 15:57:13

标签: javascript meteor reactjs

我已创建动态生成输入文本字段但无法找到读取和获取值并将其存储到数组的方法。请找到下面的代码

我有单独的组件用于添加名为 IncrementTableRow 的新输入字段行

import React, {PropTypes} from 'react';

class IncrementTableRow extends React.Component {
  constructor(props) {
    super(props);
  }

  render() {
    return (
      <tr>
        <th scope="row">{this.props.index}</th>
        <td><input type="text" className="form-control" ref={"firstValue"+this.props.index} placeholder=""/></td>
        <td><input type="text" className="form-control" ref={"secondValue"+this.props.index} placeholder=""/></td>
      </tr>
    );
  }
}

export default IncrementTableRow;

另外,我有调用 IncrementTableRow 的主要组件是调用线。

export default class SuggestInterestProductDetails extends Component {

constructor(props) {
    super(props);
    this.state = {
      rows: []
    };
    this.AddRow = this.AddRow.bind(this);
  }

AddRow() {
    this.setState({
      rows: [{val: 5}, ...this.state.rows]
    });
  }

  render() {
    let rows = this.state.rows.map(row => {
      return <Row />
    });

    return (
    <div>
      <button onClick={this.AddRow}>Add Row</button>
      <table>
        {rows}
      </table>
    </div>
    );
  }


}

我需要读取每个生成的文本字段值并将其存储到数组

1 个答案:

答案 0 :(得分:1)

您的代码示例似乎不完整 - 您甚至不会将值添加到行中 所以这里只有一个简短的答案:

检查反应参考 https://facebook.github.io/react/docs/more-about-refs.html

您可以为

中的每一行添加引用
let rows = this.state.rows.map(row => {
  return <Row />
});

也许更好的解决方案是在你的行中添加一个onChange监听器并更新你的parrent组件的状态

let rows = this.state.rows.map((row,i) => {
  return <Row ref={'row-'+i} onChange={(event) => this.myListener(event,i)} />
});