수색…


소개

반응하는 키는 내부적으로 동일한 계층 구조의 DOM 요소 목록을 식별하는 데 사용됩니다.

따라서 배열을 반복하여 li 요소 목록을 표시하는 경우 각 li 요소는 key 속성에 지정된 고유 식별자를 필요로합니다. 일반적으로 데이터베이스 항목의 ID 또는 배열 색인이 될 수 있습니다.

비고

배열 색인을 키로 사용하는 것은 일반적으로 배열이 시간이 지남에 따라 변경 될 때 권장되지 않습니다. React Docs :

마지막 수단으로 배열의 항목 인덱스를 키로 전달할 수 있습니다. 항목 순서를 변경하지 않아도 재정렬이 느려지면 잘 작동합니다.

이것에 대한 좋은 예 : https://medium.com/@robinpokorny/index-as-a-key-is-an-anti-pattern-e0349aece318

요소의 id 사용하기

여기에 우리 구성 요소의 소품으로 전달되는 할 일 항목 목록이 있습니다.

할 일 항목마다 텍스트 및 id 속성이 있습니다. id 속성이 백엔드 데이터 저장소에서 왔으며 고유 한 숫자 값이라고 가정합니다.

todos = [
  {
    id: 1,
    text: 'value 1'
  },
  {
    id: 2,
    text: 'value 2'
  },
  {
    id: 3,
    text: 'value 3'
  },
  {
    id: 4,
    text: 'value 4'
  },
];

반응 된 각 목록 요소의 키 속성을 todo-${todo.id} 하여 반응자가 내부적으로 식별 할 수있게합니다.

render() {
  const { todos } = this.props;
  return (
    <ul>
      { todos.map((todo) =>
        <li key={ `todo-${todo.id}` }>
          { todo.text }
        </li>
      }
    </ul>
  );
}

배열 인덱스 사용하기

고유 한 데이터베이스 ID가 없다면 다음과 같이 배열의 숫자 인덱스를 사용할 수도 있습니다.

render() {
  const { todos } = this.props;
  return (
    <ul>
      { todos.map((todo, index) =>
        <li key={ `todo-${index}` }>
          { todo.text }
        </li>
      }
    </ul>
  );
}


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow