2017-08-23 32 views
0

嗯,我已經建立了一個Web應用程序幾個星期了,而且一切都很好。我得到了必須在Internet Explorer中測試的部分,以及所有出現的內容(除了一個之外都是固定的),Object.entries()不受支持。Object.entries()替代Internet Explorer和ReactJS

我一直在做一些研究,並試圖想出一個簡單的選擇,但沒有運氣。

更具體地講,我把一個物體從一個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> 
    ); 
} 

所以一切正常,除了互聯網資源管理器。問題是,在這個特定的組件中,我渲染了超過30個<select></select>字段。如果有一個解決方案不需要我重建所有東西,那就太棒了。

有沒有簡單的解決方案?解決這個問題的方法?

在此先感謝。

+1

你有探索加載填充工具?這是缺少像這樣的功能的標準方法。 – loganfsmyth

+3

[polyfill](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/entries#Polyfill)相當簡單。 – Bergi

+0

'Object.keys(this.state.filterInfo.sectorId).map(this.eachOption,this.state.filterInfo.sectorId)'在回調中得到的值是'this [key]' – dandavis

回答

1

通常的第一個項目時,要在舊的瀏覽器使用新的API,以研究是否有一個簡單的填充工具。而且,果然有上MDN doc site所示Object.entries()一個非常簡單的填充工具:

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

非常感謝,它現在正在工作。 –