此語法與object dectructuring(請參閱examples)相關,在React中很常見,因爲組件可以聲明爲稱爲props的單個對象的函數。
而是寫的:
var Hello = (props) => {
return <div>Hello {props.name} from {props.city} with {props.item}</div>;
}
你可以把它降低到這種形式:
var Hello = ({name, city, item}) => <div>Hello {name} from {city} with {item}</div>
在您的例子是destructures的props
到性能para1
和para2
。
var works = ({para1, para2}) => console.log(para1, para2)
works({para1: 'test', para2: 'another one'})
works({para2: 'another one', para1: 'test', anotherProp: 'does not matter'})
正如你所看到的通過性能的順序並不重要。與默認參數列表語法相反。這種行爲在React應用程序中可能是有利的,因爲組件傾向於接受多個命名屬性。
語法問題
沒有周圍物體解構括號中函數的參數,因爲它被解析爲一個對象的文字,你會得到一個語法錯誤。
var doesntWork = {para1, para2} => console.log(para1, para2)
當您想要在箭頭函數內返回一個對象時,會出現相同的問題,這可能會導致不希望的行爲。例如,此代碼將返回並打印undefined
。
var add = ({a, b}) => {sum: a + b}
var result = add({b: 3, a: 5})
console.log(result)
托架被解析爲一個碼塊時,不表達。要修復代碼,應該用大括號包裝:var add = ({a, b}) => ({sum: a + b})
對象和數組解構是一個強大的工具,它使React中的無狀態功能組件成爲可能和可行的。代碼變得更簡單,更易讀。
基本上是[ES6中的函數參數定義]的副本(http://stackoverflow.com/q/30862988/218196) –