2

I want to render tabs that I stored in an array and set the first tab in the array as default.

Not using an array, it would look kind of like this:

<Tab
   name={"first tab"}
   default
/>
<Tab
   name={"second tab"}
/>

But now since I'm using an array and mapping through it, I'm wondering how i can set the default attribute for the first tab.

This is how the array looks like:

  const tabs = [
{
  name: "first tab",
  
},
{
  name: "second tab",
}]

This is my map function:

    {tabs.map(tab => (
      <Tab
        name={tab.name} />
    )}
inconnu
  • 285
  • 1
  • 8

3 Answers3

2

map passes your callback the index of the entry as the second argument, so:

{tabs.map((tab, index) => (
    <Tab
        key={tab.name}
        name={tab.name}
        default={index === 0}
    />
)}

Note I've also added a key, since you need that whenever you give an array to React.

T.J. Crowder
  • 959,406
  • 173
  • 1,780
  • 1,769
1

The second argument to the callback you pass to map is the index.

The first item will have an index of 0 (which is false).

So capture that and then you can just: default={!index}

Quentin
  • 857,932
  • 118
  • 1,152
  • 1,264
1

Use the array index, the default tab would be index 0, or all truthy indices would not be default.

{tabs.map((tab, i) => (
  <Tab
    key={tab.name}
    default={!i}
    name={tab.name} />
)}
Drew Reese
  • 103,803
  • 12
  • 69
  • 96