Render an array of Objects in ReactJs

戏子无情 提交于 2019-12-18 09:14:11

问题


I am trying to go through object properties (Name for this example) and list them within easy loop in function. I have found some pretty awkward way of doing this but it doesn't seem right.

Here is what i got:

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>

Is there a better way to do this? I simply need a loop to go through array of objects, list needed properties and create one of many html nodes.


回答1:


You can simply map over ItemsToSell array

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>



回答2:


Why don't you iterate over ItemsToSell array? You don't have to add yet another one.

Note: Include key property while looping the elements, else you will receive an error.

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((elem, index) =>
        <ListItem value={elem.Name} key={index} />
      )}
    </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>


来源:https://stackoverflow.com/questions/45078848/render-an-array-of-objects-in-reactjs

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!