Насколько уникальным должен быть ключ для компонента React?

Это быстрый: какова область, в которой ключи для детей должны быть уникальными? Это только родительский компонент или все приложение?

Если последнее верно, означает ли это, что алгоритм реакции сравнения будет сохранять элемент при его перемещении по родительским компонентам?

Ответ 1

Уникальный в своих братьях и сестрах, поэтому уровень прямо под его родителем. Однако дети родительского компонента могут снова использовать тот же ключ, потому что, наконец, реакция будет составлять полный ключ из ключа текущего компонента и всех его предков. В приведенном ниже примере содержатся только автоматически сгенерированные ключи, но если вы предоставите свой собственный ключ, он будет использоваться вместо этого.

React ID's

Вы можете увидеть скомпилированный идентификатор в инструментах разработчика Chrome (вкладка Элементы).

Ответ 2

Да, похоже, что... если вы переустановите его, он даст другой реактив (например, http://webcloud.se/react-sortable/nested.html)

и снова отключит/снова смонтирует....

http://jsfiddle.net/46x0j6uq/1/

,componentWillUnmount: function() {
 //console.log("unmounted:", this.props);
 clearInterval(this.state.intervalId);
 clearTimeout(this.state.timeoutId);
}
,componentDidMount: function(){
  // console.log("mounted:", this.props);
  this.state.intervalId = setInterval(this.incrementCount, 1000);
 this.state.timeoutId = setTimeout(this.setColorToBlack, 300);
}

Итак, лучше не сохранять состояние в самом компоненте представления, так как он может reset сам. Вышеупомянутая скрипка - просто демоверсия, чтобы доказать точку.

Другие связанные ссылки: Использование ключей для идентификации вложенных компонентов в React.js

Я бы хотел, чтобы у React было что-то, что можно было бы рассматривать вложенные/вложенные ключевые состояния за пределы того же уровня, но я думаю, что производительность размонтирования/повторного монтажа снова, надеюсь, не будет слишком вредной.