Przeglądając kod HTML niektórych stron, zauważyłem, że niektóre z nich używają tego atrybutu „data -activeid”, na przykład:
<a data-reactid="......" ></a>
Co to za atrybut i jaka jest jego funkcja?
javascript
html
reactjs
Ayman El Temsahi
źródło
źródło
data-reactid
jest atrybutem niestandardowym używanym przez bibliotekę React JavaScript . Który został opracowany do użytku z Facebookiem i Instagramem.Odpowiedzi:
data-reactid
Atrybut jest atrybutem zwyczaj stosowany tak, że React można jednoznacznie zidentyfikować jego elementów w DOM.Jest to ważne, ponieważ aplikacje React mogą być renderowane zarówno na serwerze, jak i na kliencie. Wewnętrznie React tworzy reprezentację odwołań do węzłów DOM, które tworzą twoją aplikację (uproszczona wersja jest poniżej).
{ id: '.1oqi7occu80', node: DivRef, children: [ { id: '.1oqi7occu80.0', node: SpanRef, children: [ { id: '.1oqi7occu80.0.0', node: InputRef, children: [] } ] } ] }
Nie ma możliwości współdzielenia rzeczywistych odwołań do obiektów między serwerem a klientem, a wysłanie serializowanej wersji całego drzewa komponentów jest potencjalnie kosztowne. Kiedy aplikacja jest renderowana na serwerze, a React jest ładowany na kliencie, jedynymi danymi, jakie posiada, są
data-reactid
atrybuty.<div data-reactid='.loqi70ccu80'> <span data-reactid='.loqi70ccu80.0'> <input data-reactid='.loqi70ccu80.0' /> </span> </div>
Musi mieć możliwość konwersji tego z powrotem do powyższej struktury danych. Sposób, w jaki to robi, polega na unikalnych
data-reactid
atrybutach. Nazywa się to nadmuchiwaniem drzewa komponentów.Możesz również zauważyć, że jeśli React renderuje się po stronie klienta, używa
data-reactid
atrybutu, nawet jeśli nie musi tracić swoich odniesień. W niektórych przeglądarkach wstawia aplikację do DOM,.innerHTML
a następnie od razu rozszerza drzewo komponentów, aby zwiększyć wydajność.Inną interesującą różnicą jest to, że identyfikatory React renderowane po stronie klienta będą miały przyrostowy format liczby całkowitej (jak
.0.1.4.3
), podczas gdy identyfikatory renderowane przez serwer będą poprzedzone losowym ciągiem znaków (takim jak.loqi70ccu80.1.4.3
). Dzieje się tak, ponieważ aplikacja może być renderowana na wielu serwerach i ważne jest, aby nie było kolizji. Po stronie klienta istnieje tylko jeden proces renderowania, co oznacza, że liczniki mogą być używane do zapewnienia unikalnych identyfikatorów.document.createElement
Zamiast tego używa React 15 , więc znaczniki renderowane przez klienta nie będą już zawierać tych atrybutów.źródło
Jest to niestandardowy atrybut html, ale prawdopodobnie w tym przypadku jest używany przez bibliotekę Facebook React JS.
Spójrz: http://facebook.github.io/react/
źródło
Atrybut danych niestandardowych w HTML5
Chciałbym zacytować komentarz Iana w mojej odpowiedzi:
reactid
to tylko przyrostek, możesz mieć tutaj dowolną nazwę, npdata-Ayman
. : .Jeśli chcesz znaleźć różnicę, sprawdź skrzypce w tej odpowiedzi SO i skomentuj .
źródło
atrybuty danych są powszechnie używane w różnych interakcjach. Zwykle za pomocą javascript. Nie wpływają one na nic związanego z zachowaniem witryny i stanowią wygodną metodę przekazywania danych w dowolnym celu. Oto artykuł, który może wyjaśnić sprawę:
http://ejohn.org/blog/html-5-data-attributes/
Atrybut danych można utworzyć, poprzedzając
data-
dowolny standardowy bezpieczny łańcuch atrybutów (alfanumeryczny bez spacji i znaków specjalnych). Na przykładdata-id
lub w tym przypadkudata-reactid
źródło
To jest atrybut danych HTML. Zobacz to, aby uzyskać więcej szczegółów: http://html5doctor.com/html5-custom-data-attributes/
Zasadniczo jest to po prostu kontener twoich niestandardowych danych, a HTML nadal jest prawidłowy. To
data-
plus jakiś unikalny identyfikator.źródło