【问题标题】:ReactJS how to loop through dynamically named refsReactJS如何循环动态命名的refs
【发布时间】:2016-09-07 05:13:32
【问题描述】:

我正在查看为输入动态命名 refs 的代码行,其中“item”是从零开始的递增值。

"input type="text" ref={'name'+item} defaultValue={item} />"

我将如何遍历这些动态 ref 以提取值?我试过这个没有运气。它告诉我对象未定义。 (输入的长度将等于添加元素的数量)

var arr = this.state.inputs;
var arrayLength = arr.length;
for (var i = 0; i < arrayLength; i++) {
    var c = this.refs.name + i.value
    alert(c);
}

虽然,这确实有效,但它是动态的,所以我需要遍历它,而不是硬编码:

alert(this.refs.name0.value);
alert(this.refs.name1.value);
alert(this.refs.name2.value);

【问题讨论】:

  • Object.keys .....

标签: reactjs


【解决方案1】:

我相信您需要获取输入的 DOM 对象,而不仅仅是 refs(至少这是我的经验):

import ReactDOM from 'react-dom';

const values = {}; 
Object.keys(this.refs)
    .filter(key => key.substr(0,4) === 'name')
    .forEach(key => {
        values[key] = ReactDOM.findDOMNode(this.refs[key])).value || null;
    });

祝你好运!

【讨论】:

  • 谢谢!!!由于某种原因,它在循环的第一次迭代中获取了一个 null 值。我只是用 if 语句过滤掉它。它有效...
  • 也许可以注销 forEach 中的密钥,并确保该密钥是文本输入的适当参考。也许还有其他带有'name_' 参考的元素?不管怎样,很高兴它对你有用:)
猜你喜欢
  • 2018-03-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-06
  • 1970-01-01
  • 1970-01-01
  • 2012-12-22
相关资源
最近更新 更多