通过地图和显示组件进行反应循环

Dor*_*rki 5 typescript reactjs

所以我有一个独特的情况,

在我所在的州,我没有可以执行映射的常规列表,然后在每次迭代中显示组件,例如:

list.map(shape => <Shape {...shape} />)
Run Code Online (Sandbox Code Playgroud)

但我有一个哈希图。我需要知道key和 ,value所以我将拥有将其显示为组件所需的信息。所以我找到了一个很好的方法:entries()返回一个Iterator,但是我如何以可以内联显示新组件的方式迭代它?

伪代码中类似的东西:

myHashMap.entries().toList().map((key, value) => <MyComponent myKey={key} myValue={value} />)

Dor*_*rki 11

你们给出了很好的答案,但我找到了最简单的语法:

Array.from(myHashMap.entries()).map((entry) => {
    const [key, value] = entry;
    return (<MyComponent myKey={key} myValue={value} />);
}
Run Code Online (Sandbox Code Playgroud)


San*_*ndy 2

Map 函数基本上循环并将每个循环的结果作为数组返回。所以基本上你最终需要的只是一组组件。只是有不同的途径来实现它。

将 HashMap 转换为数组并在其上运行映射会比较慢。请避免这种情况。下面的代码将仅循环一次。

function getComponents(myHashMap) {
  const comps = [];
  myHashMap.forEach((value, key) => comps.push(<MyComponent myKey={key} myValue={value} />));
  return comps;
}
Run Code Online (Sandbox Code Playgroud)

希望能帮助到你。