2015-10-30 10 views
12

To jest szybkie pytanie: w jakim zakresie klucze potomne muszą być unikatowe? Czy to tylko element nadrzędny, czy cała aplikacja?Jak wyjątkowy powinien być klucz komponentu React?

Jeśli ta ostatnia jest prawdziwa, oznacza to, że algorytm reagowania na różnice zachowa element, gdy zostanie przeniesiony na elementy nadrzędne?

+3

Musi być unikalny w obrębie rodzeństwa. – zerkms

Odpowiedz

10

Unikalny w rodzeństwie, więc poziom bezpośrednio pod jego rodzica. Dzieci komponentu macierzystego mogą jednak ponownie użyć tego samego klucza, ponieważ w końcu reakcja skomponuje kompletny klucz z klucza bieżącego komponentu i wszystkich jego przodków. Poniższy przykład zawiera tylko klucze generowane automatycznie, ale jeśli podasz własny klucz, zostanie on użyty.

React ID's

Widać ID składa się w Chrome narzędzi programistycznych (elementy zakładka).

+1

Fajnie, ma sens, więc aby odpowiedzieć na drugie pytanie, przeniesienie komponentu do innego rodzica powoduje, że jest to zupełnie inny element React i zostanie odtworzony od zera, prawda? – konrad

1

Tak, wygląda na to ... jeśli go ponownie niepełnych, będzie to dać inny reactid (np. http://webcloud.se/react-sortable/nested.html)

i odmontowuje/re-zamontować ponownie. ...

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); 
} 

Więc lepiej nie zapamiętuje stanu w samej składowej widzenia, ponieważ może się zresetować. Powyższe skrzypce to tylko wersja demonstracyjna, która ma na celu udowodnienie słuszności.

Inne powiązane linki: Using keys to identify nested components in React.js

ja chciał React miał coś do rozważenia scoped/zagnieżdżone stany kluczowe poza tym samym poziomie, ale myślę, wydajność odmontowuję/ponownego montażu ponownie powinna miejmy nadzieję nie będzie zbyt szkodliwe .

Powiązane problemy