13

What is the function of the key attribute in the p tag? I inspected the dom, and I expected to see p tags for each element of the taco list as expressed in <p taco-1>, but it's just <p>. Any explanation will be much appreciated.

{this.props.tacos.map( ( taco, i ) => {
    return <p key={ `taco-${ i }` }>{ taco }</p>;
})}
MLhacker
  • 1,382
  • 4
  • 20
  • 35
  • 1
    https://facebook.github.io/react/docs/lists-and-keys.html – Blorgbeard Nov 18 '16 at 03:03
  • Possible duplicate of [Understanding unique keys for array children in React.js](https://stackoverflow.com/questions/28329382/understanding-unique-keys-for-array-children-in-react-js) – Dehan Mar 31 '19 at 05:49

1 Answers1

26

It is used by react in a collection of component to see which element is inserted, which element is removed and which element is updated. Without key attribute, it's hard to determine how to update the collection.

For example, see component collection below:

<ul>
    <li>England</li>
    <li>France</li>
</ul>

and then next state tell react to render:

<ul>
    <li>England</li>
    <li>Germany</li>
</ul>

There's multiple ways to update the DOM:

  • Change inner text of second <li>
  • Remove second <li> and add a new one

Without key, react don't know which one to choose.

You can read more in the docs.

Niyoko
  • 7,512
  • 4
  • 32
  • 59