2017-08-12 95 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