Pab*_*hle 8 javascript ecmascript-6 reactjs
好吧,我已经在构建一个Web应用程序了几周了,一切都很好。我到了必须在Internet Explorer中进行测试的部分,并且在所有出现的事情中(除了一个之外,所有事情都已修复),不支持Object.entries()。
我一直在做一些研究,并试图提出一个简单的选择,但一点也不幸运。
更具体地说,我从API引入一个对象,以填充<select></select>我必须过滤一些信息的字段的选项,如下所示:
Object.entries(this.state.filterInfo.sectorId).map(this.eachOption)
// Function
eachOption = ([key, val], i) => {
return(
<option value={val} key={i}>{val}</option>
);
}
Run Code Online (Sandbox Code Playgroud)
因此,除了Internet Explorer之外,其他所有东西都可以正常工作。问题是在这个特定的组件中,我渲染了30多个<select></select>字段。如果有一种解决方案不需要我重新构建所有内容,那将是惊人的。
有没有简单的解决方案?有办法解决吗?
提前致谢。
jfr*_*d00 18
当您想在较旧的浏览器中使用较新的API时,通常要研究的第一项是是否有简单的polyfill。并且,可以肯定的是,有一个非常简单的polyfill可以Object.entries()显示在MDN doc网站上:
if (!Object.entries)
Object.entries = function( obj ){
var ownProps = Object.keys( obj ),
i = ownProps.length,
resArray = new Array(i); // preallocate the Array
while (i--)
resArray[i] = [ownProps[i], obj[ownProps[i]]];
return resArray;
};
Run Code Online (Sandbox Code Playgroud)