Przejdź do treści głównej

RootTag

Nieoficjalne Tłumaczenie Beta

Ta strona została przetłumaczona przez PageTurner AI (beta). Nie jest oficjalnie zatwierdzona przez projekt. Znalazłeś błąd? Zgłoś problem →

RootTag to nieprzezroczysty identyfikator przypisany do natywnego widoku głównego twojej powierzchni React Native — czyli odpowiednio instancji ReactRootView lub RCTRootView dla Androida i iOS. W skrócie, jest to identyfikator powierzchni.

Kiedy używać RootTag?

Większość programistów React Native prawdopodobnie nie będzie potrzebować korzystać z RootTagów.

RootTagi są przydatne, gdy aplikacja renderuje wiele widoków głównych React Native i musisz różnie obsługiwać wywołania natywnych API w zależności od powierzchni. Przykładem jest aplikacja korzystająca z natywnej nawigacji, gdzie każdy ekran to osobny widok główny React Native.

W natywnej nawigacji każdy widok główny React Native jest renderowany w widoku nawigacyjnym platformy (np. Activity na Androidzie, UINavigationViewController na iOS). Dzięki temu możesz wykorzystać paradygmaty nawigacji platformy, takie jak natywny wygląd i wrażenia oraz przejścia nawigacyjne. Funkcjonalność interakcji z natywnymi API nawigacji może być udostępniona React Native poprzez moduł natywny.

Na przykład, aby zaktualizować pasek tytułowy ekranu, wywołałbyś API modułu nawigacyjnego setTitle("Updated Title"), ale musiałoby ono wiedzieć, który ekran w stosie zaktualizować. Tutaj niezbędny jest RootTag, aby zidentyfikować widok główny i jego kontener hostujący.

Innym przypadkiem użycia RootTag jest sytuacja, gdy twoja aplikacja musi przypisać określone wywołanie JavaScript do natywnego kodu na podstawie widoku głównego, z którego pochodzi. RootTag jest niezbędny do rozróżnienia źródła wywołania z różnych powierzchni.

Jak uzyskać dostęp do RootTag... jeśli go potrzebujesz

W wersjach 0.65 i starszych RootTag jest dostępny poprzez kontekst dziedziczony (legacy context). Aby przygotować React Native do funkcji Concurrent nadchodzących w React 18 i nowszych, migrujemy do najnowszej Context API za pomocą RootTagContext w wersji 0.66. Wersja 0.65 obsługuje zarówno kontekst dziedziczony, jak i zalecany RootTagContext, aby dać programistom czas na migrację miejsc wywołań. Zobacz podsumowanie zmian powodujących niezgodność.

Jak uzyskać dostęp do RootTag za pomocą RootTagContext.

js
import {RootTagContext} from 'react-native';
import NativeAnalytics from 'native-analytics';
import NativeNavigation from 'native-navigation';

function ScreenA() {
const rootTag = useContext(RootTagContext);

const updateTitle = title => {
NativeNavigation.setTitle(rootTag, title);
};

const handleOneEvent = () => {
NativeAnalytics.logEvent(rootTag, 'one_event');
};

// ...
}

class ScreenB extends React.Component {
static contextType: typeof RootTagContext = RootTagContext;

updateTitle(title) {
NativeNavigation.setTitle(this.context, title);
}

handleOneEvent() {
NativeAnalytics.logEvent(this.context, 'one_event');
}

// ...
}

Dowiedz się więcej o Context API dla klas i hooków w dokumentacji Reacta.

Zmiana powodująca niezgodność w wersji 0.65

RootTagContext był wcześniej nazwany unstable_RootTagContext i został zmieniony na RootTagContext w wersji 0.65. Zaktualizuj wszelkie użycia unstable_RootTagContext w swoim kodzie.

Zmiana powodująca niezgodność w wersji 0.66

Dostęp do RootTag przez dziedziczony kontekst zostanie usunięty i zastąpiony przez RootTagContext. Począwszy od wersji 0.65, zachęcamy programistów do aktywnej migracji dostępu do RootTag na RootTagContext.

Plany na przyszłość

Wraz z postępami w nowej architekturze React Native, będą przyszłe iteracje RootTag, z zamiarem zachowania nieprzezroczystego typu RootTag i zapobiegania niepotrzebnym zmianom w kodzie React Native. Prosimy, nie polegaj na tym, że RootTag obecnie jest aliasem do liczby! Jeśli twoja aplikacja polega na RootTagach, śledź nasze dzienniki zmian wersji, które możesz znaleźć tutaj.