【问题标题】:React Native-- advanced example on FlatListReact Native——FlatList 上的高级示例
【发布时间】:2017-08-12 23:58:45
【问题描述】:

我已经使用 react 创建了一个游戏,现在我正在尝试对我的代码+样式进行必要的更改,以便游戏通过 ReactNative 在移动设备上运行。以下代码来自有关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 箭头函数和 Maps,但老实说,我很难理解以下两种情况下使用的语法:

a) 第 2 行:(new Map(): Map&lt;string, boolean&gt;) 假设返回什么?

b) 第 4 行:一个箭头函数,它以一个...符号作为参数?为什么?

【问题讨论】:

    标签: react-native react-native-flatlist


    【解决方案1】:

    第 2 行,仅使用 Map 类型初始化状态(请参阅此处的 Map:
    https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map

    new Map() 是创建 Map 的方式,后面的部分是“Flow”类型规范。这是 Facebook 自己的 Javascript 静态类型检查器库(见这里:https://flow.org/en/docs/types/arrays/

    映射类似于 JS 中的对象,但它们有一些区别,例如,键可以是任何东西,它们是可迭代的,它们可以更大,等等。

    第 4 行:正如您在 Flow 中看到的,您可以指定参数的类型, 所以你基本上期望“id”应该是一个字符串

    【讨论】:

    • 嘿,你说得对,就是用流量。。我觉得很奇怪,他们没有这么说的冲动,我的意思是流量不是超级流行的。虽然语法很奇怪,但我觉得我觉得很正确,很困惑。我以前使用过地图,但这是完全不同的东西..
    猜你喜欢
    • 2022-12-18
    • 2020-08-07
    • 2022-01-22
    • 2019-03-21
    • 1970-01-01
    • 2021-06-17
    • 2018-04-05
    • 2018-06-04
    • 1970-01-01
    相关资源
    最近更新 更多