javascript - 使用 React 渲染嵌套数据

标签 javascript angularjs reactjs iterator

我有一个像这样的数组:

let obj = [
    ['Banana', 'Apple'],
    ['Orange', 'Chicken'],
    ['Data', 'Beer']
];

我无法渲染列表中的每个项目。

我尝试过的:

<List>
    {this.state.list.map((item, key)=>(
        {item.map((i, k) => (
            <ListItem primaryText={i}/>
        ))}
    ))}
</List>

有没有办法用 React 迭代像我这样的嵌套数据?

我在这一行上遇到错误 {item.map((i, k) => (,编译器说它正在等待 : 而不是 .

使用 AngularJS,我可以轻松地做到这一点:

<li ng-repeat="item in items">
    <li ng-repeat="i in item">{{i}}</li>
</li>

如果有类似的东西那就太好了!

最佳答案

使用 Array#concat 展平列表和 spread ,然后使用单个 Array#map 进行迭代:

const arr = [
    ['Banana', 'Apple'],
    ['Orange', 'Chicken'],
    ['Data', 'Beer']
];

const List = ({ list }) => (
  <ul>
    {[].concat(...list).map((item, key)=>(
        <li key={key}>{item}</li>
    ))}
  </ul>
);

ReactDOM.render(
  <List list={arr} />,
  demo
);
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>

<div id="demo"></div>

关于javascript - 使用 React 渲染嵌套数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47780543/

相关文章:

javascript - jquery croppie 插件停止我的 jquery 代码中的 "$(window).resize"函数

javascript - 在模式弹出窗口中打开外部网站

angularjs - 当我使用 ng-map 和 angularjs 缩小时标记会移动

angularjs - 有什么简单的方法可以在 Vue-cli 中创建新组件吗?

javascript - @babel/plugin-proposal-class-properties 不起作用

c# - 如何以编程方式登录网站并下载文件

Javascript 文件困惑,我需要帮助修复它

javascript - 在 AngularJs 中为 Angular-file-upload 定义多个 uploader

javascript - 尝试更新预订时 setState 出错

javascript - 如何避免重复渲染 React 组件?