Internet Explorer 和 ReactJS 的 Object.entries() 替代品

新手上路,请多包涵

好吧,我已经构建了几个星期的 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>
    );
}

因此,除了 Internet Explorer 之外,一切正常。问题是,在这个特定的组件中,我渲染了 30 多个 <select></select> 字段。如果有一个不需要我重建一切的解决方案,那就太棒了。

有一个简单的解决方案吗?解决这个问题的方法?

提前致谢。

原文由 Pablo Zehle 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 423
2 个回答

当您想在旧浏览器中使用更新的 API 时,通常首先要研究的是是否有简单的 polyfill。而且,果然有一个非常简单的 polyfill for Object.entries() 显示在 MDN 文档站点 上:

 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;
  };

原文由 jfriend00 发布,翻译遵循 CC BY-SA 3.0 许可协议

import 'core-js/es7/object';

这对我有用。

原文由 Hector 发布,翻译遵循 CC BY-SA 4.0 许可协议

推荐问题