我正在查看一行代码,它为输入动态命名了 refs,其中“item”是从零开始的递增值。
“输入类型=“文本”ref={'name'+item}defaultValue={item}/>”
我如何循环遍历这些动态引用来提取值?我尝试过这个但没有运气。它告诉我对象未定义。 (输入的长度将等于添加元素的数量)
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);
最佳答案
我相信你需要获取输入的 DOM 对象,而不仅仅是引用(至少这是我的经验):
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;
});
祝你好运!
关于ReactJS如何循环动态命名的引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39357759/