2017-01-04 82 views
0

我創造了這樣一個代碼替換Object.entries()(和它的作品在當地谷歌瀏覽器,但在AWS上不工作):尋找與ReactJS

parameters: { 
     'forces': 100, 
     'hit': 5, 
     'defense': 5 
    } 
<Parameters params={this.props.parameters}/> 
    //In render method: 
    //console.log(this.props.params); "produces: Object{forces:100, hit:5, defence:5}" 
const bars = Object.entries(this.props.params).map(([key,value]) => { 
    return (
    <ProgressBar 
     key={key} 
     property={key} 
     value={Number(value)} /> 
) 
}); 
return (
    <div className="Parameters"> 
    {bars} 
    </div> 
); 

基於這樣的信息: How do I loop through or enumerate a JavaScript object 如何使用舊的時尚代碼來創建等於代碼:

const bars = []; 
const obj = this.props.params; 
for (const key of Object.keys(obj)) { 
//console.log(key, obj[key]); 
bars.push() 

} 

的「酒吧」陣列應該有3個進度條組件......我創造了這個項目只是爲了我自己的教育目的和想學習不同的方法。

鏈接到這個應用程序:Alex Pilugin: React-Game(它工作在Chrome,而不是在Safari瀏覽器)

enter image description here

+0

爲什麼不能在AWS上運行? – hawk

+0

TypeError:Object.entries不是函數。 (在Object.entries(this.props.params)...在Safari中(它在谷歌瀏覽器中工作) - 瀏覽器中的這個問題(不是AWS) –

回答

1

Object.keys取代它,因爲Object.entries Safari中並沒有被支持。

const bars = []; 
Object.keys(this.props.params).forEach(key => { 
    const value = this.props.params[key]; 
    bars.push(
    <ProgressBar 
    key={key} 
    property={key} 
    value={Number(value)} /> 
    ); 
}); 
+0

非常感謝!它的工作原理!祝您一切順利! –

+0

@AlexPilugin歡迎:) – hawk

0

Object.entriesES2017 Draft proposal。 (Full Doc

您需要一個polyfill來支持跨瀏覽器。

+0

謝謝你是對的,我理解它, t知道如何在我的項目中添加polyfill或如何在ES2015上正確編碼... –