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
  • 611
  • 1
  • 5
  • 14

3 Answers3

2

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
  • 914,110
  • 126
  • 1,211
  • 1,335
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
  • 1,031,962
  • 187
  • 1,923
  • 1,875
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
  • 165,259
  • 14
  • 153
  • 181