--- id: 5a24c314108439a4d403618b title: Give Sibling Elements a Unique Key Attribute challengeType: 6 isRequired: false videoUrl: '' localeTitle: Дайте сиблинг-элементам уникальный атрибут ключа --- ## Description Последняя задача показала, как используется метод `map` для динамичного рендеринга нескольких элементов, основываясь на вводе пользователя. Однако в том примере отсутсвовала важная часть. Когда вы создаете массив, атрибут `key` каждого из элементов должен иметь уникальное значение. React использует эти ключи для того, чтобы отслеживать какие элементы были добавлены, изменены или удалены. Это помогает сделать процесс повторного рендеринга более эффективным, когда мы изменяем список. Обратите внимание, что ключи должны быть уникальными только среди сиблинг-элементов, они не обязаны быть глобально уникальными в вашем приложении. ## Instructions undefined ## Tests
```yml tests: - text: 'Компонент Frameworks должен присутсовать и отображаться на странице.' testString: 'assert(Enzyme.mount(React.createElement(Frameworks)).find("Frameworks").length === 1, "The Frameworks component should exist and render to the page.");' - text: 'Frameworks должен отображать элемент h1.' testString: 'assert(Enzyme.mount(React.createElement(Frameworks)).find("h1").length === 1, "Frameworks should render an h1 element.");' - text: Frameworks должны отображать элемент ul . testString: 'assert(Enzyme.mount(React.createElement(Frameworks)).find("ul").length === 1, "Frameworks should render a ul element.");' - text: Тег ul должен отображать 6 дочерних элементов li . testString: 'assert(Enzyme.mount(React.createElement(Frameworks)).find("ul").children().length === 6 && Enzyme.mount(React.createElement(Frameworks)).find("ul").childAt(0).name() === "li" && Enzyme.mount(React.createElement(Frameworks)).find("li").length === 6, "The ul tag should render 6 child li elements.");' - text: Каждый элемент элемента списка должен иметь уникальный key атрибут. testString: 'assert((() => { const ul = Enzyme.mount(React.createElement(Frameworks)).find("ul"); const keys = new Set([ ul.childAt(0).key(), ul.childAt(1).key(), ul.childAt(2).key(), ul.childAt(3).key(), ul.childAt(4).key(), ul.childAt(5).key(), ]); return keys.size === 6; })(), "Each list item element should have a unique key attribute.");' ```
## Challenge Seed
```jsx const frontEndFrameworks = [ 'React', 'Angular', 'Ember', 'Knockout', 'Backbone', 'Vue' ]; function Frameworks() { const renderFrameworks = null; // change code here return (

Popular Front End JavaScript Frameworks

    {renderFrameworks}
); }; ```
### After Test
```js console.info('after the test'); ```
## Solution
```js // solution required ```