javascript - 在 ReactJs 中渲染对象数组

标签 javascript reactjs babeljs

我正在尝试遍历对象属性(本例中的名称)并将它们列在函数的简单循环中。我发现了一些非常尴尬的方法来做到这一点,但它似乎不对。

这是我得到的:

const ItemsToSell = [{"Name":"Cup","Price":"99.99"},{"Name":"IPhone","Price":"99.99"},{
"Name":"Pen","Price":"99.99"}]

function ListItem(props) {
  return <li>{props.value}</li>;
}

function NumberList(props) {
  const a = props.numbers;
  return (
    <ul>
      {a.map((number) =>
        <ListItem  value={ItemsToSell[number].Name} />
      )}
    </ul>
  );
}

const numbers = [0,1, 2];
ReactDOM.render(
  <NumberList numbers={numbers} />,
  document.getElementById('root')
);
<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="root"></div>

有更好的方法吗? 我只需要一个循环来遍历对象数组、列出所需的属性并创建许多 html 节点之一。

最佳答案

您可以简单地映射 ItemsToSell 数组

const ItemsToSell = [{"Name":"Cup","Price":"99.99"},{"Name":"IPhone","Price":"99.99"},{
"Name":"Pen","Price":"99.99"}]

function ListItem(props) {
  return <li>{props.value}</li>;
}

function NumberList(props) {
  return (
    <ul>
      {ItemsToSell.map((obj, index) =>
        <ListItem  key={index} value={obj.Name} />
      )}
    </ul>
  );
}

ReactDOM.render(
  <NumberList  />,
  document.getElementById('root')
);
<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="root"></div>

关于javascript - 在 ReactJs 中渲染对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45078848/

相关文章:

javascript - 如何在野外使用 Ext-JS?摘掉还是不摘掉?

javascript - 超出最大调用堆栈

javascript - 使用 jQuery 在 iF​​rame 元素上定义事件

javascript - 如何防止BabelJS创建 'arguments'关键字的全局变量?

Node.js 命令行脚本有时不会终止

gulp - babel ES7 Async - 未定义 regeneratorRuntime

javascript - 使用参数从字符串调用动态方法 - node.js

javascript - ReduxReducer更新了值但没有反射(reflect)在props中

javascript - 如何计算子对象的数量并将计算出的索引传递给子对象?

reactjs - 怎样计算孙子的数量