Loop through simple array of objects in React

All we need is an easy explanation of the problem, so here it is.

I am not using JSX. Is this a problem? Is this considered bad practice?

var links = [
  { endpoint: '/america' },
  { endpoint: '/canada' },
  { endpoint: '/norway' },
  { endpoint: '/bahamas' }
];

class Navigation extends React.Component {
  render() {
    return (
      <div className="navigation">
        <ul>
          const listItems = links.map((link) =>
            <li key={link.endpoint}>{link.endpoint}</li> 
          );
        </ul>
      </div>
    );
}

Based on the basic list component section of the react docs, it seems like I should be able to print the contents of an array, the way I’m doing it inside my <ul></ul>

https://facebook.github.io/react/docs/lists-and-keys.html#basic-list-component

Is the problem that I am using an array of objects? The docs are using a simple array. I’d appreciate a push into the right direction.

How to solve :

I know you bored from this bug, So we are here to help you! Take a deep breath and look at the explanation of your problem. We have many solutions to this problem, But we recommend you to use the first method because it is tested & true method that will 100% work for you.

Method 1

The issue is that your syntax is invalid, you should have something like this :

var links = [
  { endpoint: '/america' },
  { endpoint: '/canada' },
  { endpoint: '/norway' },
  { endpoint: '/bahamas' }
];

class Navigation extends React.Component {
  render() {
    const listItems = links.map((link) =>
        <li key={link.endpoint}>{link.endpoint}</li> 
    );
    return (
      <div className="navigation">
        <ul>
          {listItems}
        </ul>
      </div>
    );
}

Method 2

You should be able to do something like this:

    class Navigation extends React.Component {
      render() {
        return (
          <div className="navigation">
            <ul>
              {
                links.map(link =>
                  <li key={link.endpoint}>{link.endpoint}</li> 
                )
              }
            </ul>
          </div>
        );
    }

Note: Use and implement method 1 because this method fully tested our system.
Thank you 🙂

All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0

Leave a Reply