2017-08-12 96 views
0

我已經使用react創建了一個遊戲,現在我正在嘗試對我的代碼+樣式進行必要的更改,以便遊戲通過ReactNative在移動設備上運行。以下代碼來自關於FlatList的官方指南。React Native-- FlatList上的高級示例

1. class MyList extends React.PureComponent { 
2. state = {selected: (new Map(): Map<string, boolean>)}; 
3. _keyExtractor = (item, index) => item.id; 
4. _onPressItem = (id: string) => { 
// updater functions are preferred for transactional updates 
5. this.setState((state) => { 
// copy the map rather than modifying state. 
6. const selected = new Map(state.selected); 
7. selected.set(id, !selected.get(id)); // toggle 
8. return {selected}; }); }; 

雖然我以前使用過這兩種ES6箭頭的功能和地圖,說實話,我很難理解語法在以下兩種情況下使用:

一)第2行:發生了什麼(new Map(): Map<string, boolean>)想返回?

b)第4行:一個箭頭函數,它作爲參數a ...符號?爲什麼?

回答

2

2號線,只是初始化與地圖類型國家(查看地圖位置:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map

新地圖()是你如何創建一個地圖,以及部分之後的是「流」型規格。它是Facebook自己的Javascript靜態類型檢查器庫(請參閱:https://flow.org/en/docs/types/arrays/

地圖與JS中的對象類似,但它們有不同之處,例如鍵可以是任何東西,它們是可迭代的,它們可以更大等等。

4號線:正如你可以看到流您可以指定在參數的類型, 所以你基本上是期待「ID」應該是一個字符串

+0

嘿,你是對的,它使用的流動。我覺得很奇怪,他們沒有感受到這樣說的衝動,我的意思是說流動不是很受歡迎。語法雖然很奇怪,但我覺得很正確,我覺得很困惑。我之前曾使用過Google地圖,但這完全不同。 – alexandros84