Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to read information of an array in reactjs?

I want to loop an array and create list items out of it. In the console,it is showing mistake is thrown, because my array has no keys but only values. So What is the right operation to read out an array?

*// this.props.items = ["cars","streets","houses"];*Wrong. You can't update props

var TodoList = React.createClass({
 render: function() {
  var createItem = function(item) {
  return <li>{item}</li>;
  };
  return <ul>{this.props.items.map(createItem)}</ul>;
}
});
like image 868
user1477955 Avatar asked Mar 08 '16 06:03

user1477955


2 Answers

Try this way:

this.filterOptions =['Monthly','Weekly','Daily'];

   <ul>
       {  this.filterOptions.map((filterItem) => {
       return (
                <li key={filterItem}>
                    <span>{filterItem}</span>
                 </li>
              );
          })
       }
     </ul>

EDIT 1: If there is duplicate value in array,

   <ul>
       {  this.filterOptions.map((filterItem,index) => {
       return (
                <li key={index}>//key must be uniq
                    <span>{filterItem}</span>
                 </li>
              );
          })
       }
     </ul> 
like image 103
Ved Avatar answered Sep 30 '22 14:09

Ved


Just to clarify because i see u use:

  var TodoList = React.createClass({

instead of

class TodoList extends React.Component {

and the question about the closing brackets in the comments above: "Is there a missing closing brackets ((filterItem,index)""

i assume you are not using the es6 syntax, so i wanted to point out that

{ this.filterOptions.map(function(filterItem, index) {
    return (
      <li key={index}>
          <span>{filterItem}</span>
       </li>
    )
  }, this)
}

equals

{ this.filterOptions.map((filterItem,index) => {
   return (
      <li key={index}>
          <span>{filterItem}</span>
       </li>
    );
  })
}
like image 44
Danillo Felixdaal Avatar answered Sep 30 '22 16:09

Danillo Felixdaal