ES6構文とBabelトランスパイラーでReactjsを使用しています。
ES5 構文を使用すると、期待どおりの結果が得られます。
console.log(React.findDOMNode(this.refs.propertyInputs).getElementsByTagName('input'));
var propInputs = React.findDOMNode(this.refs.propertyInputs).getElementsByTagName('input');
for (var i = 0; i < propInputs.length; i++){
propInputs[i].value = "";
}
console.log 出力
しかし、 for...of ループを使用すると
console.log(React.findDOMNode(this.refs.propertyInputs).getElementsByTagName('input'));
var propInputs = React.findDOMNode(this.refs.propertyInputs).getElementsByTagName('input');
for (let propInput of propInputs) {
propInput.value = "";
}
Babel はこのコードを
"use strict";
var propInputs = React.findDOMNode(undefined.refs.propertyInputs).getElementsByTagName('input');
// for (var i = 0; i < propInputs.length; i++){
var _iteratorNormalCompletion = true;
var _didIteratorError = false;
var _iteratorError = undefined;
try {
for (var _iterator = propInputs[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
var propInput = _step.value;
propInput.value = "";
}
} catch (err) {
_didIteratorError = true;
_iteratorError = err;
} finally {
try {
if (!_iteratorNormalCompletion && _iterator["return"]) {
_iterator["return"]();
}
} finally {
if (_didIteratorError) {
throw _iteratorError;
}
}
}
エラーが発生します
キャッチされていない TypeError: propInputs[Symbol.iterator] は関数ではありません