2017-01-17 115 views
2

我在這裏學習ReactJS: https://egghead.io/lessons/react-dynamically-generated-components和跨越此代碼段傳來:以對象爲參數的Javascript Arrow函數是什麼意思?

componentWillMount(){ 
    fetch('http://swapi.co/api/people/?format=json') 
     .then(response => response.json()) 
     .then(({results: items}) => this.setState({items})) 
} 

是什麼箭頭功能({results: items})部分是什麼意思?

我見過箭頭功能

  • 沒有參數()=>console.log('hi')
  • 沒有括號word=>console.log(word)
  • ,並用逗號分隔(one, two)=>console.log(one)

多個參數,但從來沒有一個對象在這個文字辦法。

另外,爲什麼this.setState({items})需要大約在items左右花括號?這是什麼意思呢?

+0

可能是重複的http://stackoverflow.com/questions/22939130/when-should-i-use-arrow-functions-in-ecmascript-6 –

+0

重複不解釋'{結果:項目} '是嗎? –

+0

@JaromandaX我不會將這個標記爲完全重複,我只是告訴看看這個。 –

回答

3
this.setState({items}) 

是ES6簡寫

this.setState({items: items}) 

({results: items}) 

基本上接受一個對象作爲與屬性中指定的結果的參數,並且在函數體這被映射到項目

運行trhough翻譯,例如babel try it out repl page代碼

fetch('http://swapi.co/api/people/?format=json') 
    .then(response => response.json()) 
    .then(({results: items}) => this.setState({items})) 

成爲

var _this = this; 

fetch('http://swapi.co/api/people/?format=json') 
.then(function (response) { 
    return response.json(); 
}) 
.then(function (_ref) { 
    var items = _ref.results; 
    return _this.setState({ items: items }); 
}); 

我會建議保持一個鏈接,巴貝爾頁 - 如果任何ES6代碼混淆了你,它粘貼在那裏看到ES5的版本是什麼:P那是我的騙

+0

我喜歡你的作弊:P – Synia

相關問題