Introduksiyon
Ang isang kritikal na aspekto ng mobile app ay ang nabigasyon: paggabay sa mga gumagamit sa pamamagitan ng iba't ibang mga screen at nagtatampok ng walang - pasubaling mga paraan ng paggamit ng JavaScript at reaksyon. Ang react Navigation ang pinakapopular, pang - akit - sa - pamayanang aklatan para sa pagpapatupad ng nabigasyon sa mga katutubong aplikasyon. Nagbibigay ito ng declarative API, suporta, table, at mga drall, at mga hawakan at mga transitions-pecification ang lahat ng mga ito upang masaklaw mula sa mga ektiba pang - panahong dumadaloy at mapagkakatiwalaan.
Mga Prerequisite at Pagluluklok
Bago gamitin ang receiving Navigation, tiyaking may proyekto ka na unang ginawa ang mga Katutubo, at kung bago ka magsimula, gamitin ang mga serbisyong ginagamit ng mga Katutubong CLI o Expo.
Naglagay ng mga Package
Iluklok ang kinakailangang mga pakete sa pamamagitan ng npm o sinulid. Ang core library at ang mga pangunahing dependencies nito ay:
npm install @react-navigation/native
Pagkatapos ay iluluklok ang sumusuportang mga aklatan na depende sa pangangasiwa sa iskrin at ligtas na dako na pinangangasiwaan:
npm install react-native-screens react-native-safe-area-context
Kung gumagamit ka ng Expo, kasama na ang mga aklatan na ito para sa mga proyekto ng Katutubo na walang kaugnayan, sundin ang mga tagubilin sa opisyal na dokumento upang matiyak na ang mga katutubong module ay maidugtong nang wasto (na nag - iintindi sa mga hawakan nito para sa pagtugon ng Katutubong 0.60+).
Magluklok ng Isang Nabigador
Ang na pang-espasyo na nabigador ay inirerekomenda para sa karamihan ng mga kasong gamit:
npm install @react-navigation/native-stack
Ang ibang mga monarko gaya [bottom tabs[ at ] ay hiwalay na naka-install:
npm install @react-navigation/bottom-tabs
npm install @react-navigation/drawer
Mga Konsepto ng Core
Ang nabigasyon ay itinatayo sa palibot ng tatlong pangunahing mga bloke sa pagtatayo:
- NavigationContainer – ang pinakalabas na balot na namamahala sa punong-dagat at estado ng paglalayag.
- – mga bahagi na nagbibigay-kahulugan sa padrong panggraduksiyon (stack, tab, draft).
- [Screens – indibiduwal na mga bahagi na kumakatawan sa isang pananaw o pahina sa app.
Ang bawat setup ng nabigasyon ay dapat na ibalot sa isang . Ang lalagyang ito ay karaniwang inilalagay sa ugat ng bahaging app.
Paglalagay ng Isang Bangkang Nabigador
Pinamamahalaan ng naisalansang na monarko ang isang huling-in-first-out na salansan ng mga screen. Ginagamit nito ang mga katutubong platform administration reflection at mga kumpas sa pamamagitan ng default.
Una, ang pag - aangkat ng kinakailangang mga module:
import { NavigationContainer } from '@react-navigation/native';
import { createNativeStackNavigator } from '@react-navigation/native-stack';
Gumawa ng isang halimbawa ng nabigang nabigador:
const Stack = createNativeStackNavigator();
Sabihin ang kahulugan ng nabigador sa loob ng iyong App na bahagi:
function App() {
return (
<NavigationContainer>
<Stack.Navigator>
<Stack.Screen name="Home" component={HomeScreen} />
<Stack.Screen name="Details" component={DetailsScreen} />
</Stack.Navigator>
</NavigationContainer>
);
}
Ang bawat ay nangangailangan ng isang prop (gamit para sa nabigasyon) at isang prop (ang bahaging recessitive na dapat isalin).
Paglikha ng mga Screen at Paglalayag
Ang mga dokumento ay mga pamantayang sangkap na ginagamit sa pagsasalin. Tumatanggap sila ng dalawang mahahalagang prop: at . Ang bagay ay nagbibigay ng mga paraan upang lumipat sa pagitan ng mga screen. Ang nasa ibaba ay isang karaniwang Home screen:
function HomeScreen({ navigation }) {
return (
<View style={{ flex: 1, alignItems: 'center', justifyContent: 'center' }}>
<Text>Home Screen</Text>
<Button
title="Go to Details"
onPress={() => navigation.navigate('Details')}
/>
</View>
);
}
Hindi kailangang gamitin ng Points screen ang props sa nabigasyon malibang kailangan pa nitong maglayag.
function DetailsScreen({ route }) {
return (
<View style={{ flex: 1, alignItems: 'center', justifyContent: 'center' }}>
<Text>Details Screen</Text>
</View>
);
}
Mga Paraan ng Paglalayag
Ang paglalakbay ay naglalaan ng ilang paraan sa pamamagitan ng prop:
- [navigate(pangalan, params)[ – lumilipat sa isang screen, muling ginagamit ang isang umiiral na pangyayari kung ito ay umiiral sa salansanan.
- push(pangalan, params)[ – laging itinutulak ang bagong screen sa salansanan, kahit na ang parehong screen ay nasa salansan na.
- goBack() – ang mga paglalayag sa nakaraang screen sa salansanan.
- replace(pangalan, params)[ – ay pinapalitan ang kasalukuyang screen ng isang bagong screen, na inaalis ang agos sa kasaysayan.
- [reset(state) – ibalik ang buong estado ng nabigasyon sa isang ibinigay na bagay ng estado.
Halimbawa, upang itulak ang isang bagong halimbawa ng Dokules screen at pumasa sa mga parameter:
navigation.push('Details', { itemId: 42, otherParam: 'anything' });
Pagpasa ng Parametro sa Pagitan ng mga Silipan
Maaaring ipasa ang Data sa screen sa pamamagitan ng ikalawang argumento sa o . Ang pagtanggap ng screen ay nagpapahintulot sa mga parameter na iyon na dumaan sa .
// In HomeScreen
navigation.navigate('Details', { userId: 123 });
// In DetailsScreen
function DetailsScreen({ route }) {
const { userId } = route.params;
return <Text>User ID: {userId}</Text>;
}
Magtakda ng default parameter na gamit ang sa screen composure:
<Stack.Screen
name="Details"
component={DetailsScreen}
initialParams={{ itemId: 0 }}
/>
Pag - isipan ang mga Mapagpipiliang Paglalayag
Maaaring gawing kaugalian ng bawat iskrin ang header nito, tab icon, etiketang pangkahon, atbp., gamit ang prop sa o ang prop sa nabigador.
Kaugalian ng Tagapangulo
<Stack.Screen
name="Details"
component={DetailsScreen}
options={{
title: 'Details',
headerStyle: { backgroundColor: '#f4511e' },
headerTintColor: '#fff',
headerTitleStyle: { fontWeight: 'bold' },
}}
/>
Ang mga pagpipiliang pang-namiks ay maaaring itakda gamit ang isang tungkulin na tumatanggap ng :
options={({ route }) => ({ title: route.params.name })}
Nabigador ng Tab
Ang nabigasyon ng tab ay karaniwan para sa mga bahaging tool-level app. Iluklok ang mga pang-ilalim na tab na monarko:
npm install @react-navigation/bottom-tabs
Gumawa ng isang tab na nabigador at pagsamahin ito sa iyong salansan:
import { createBottomTabNavigator } from '@react-navigation/bottom-tabs';
const Tab = createBottomTabNavigator();
function HomeTabs() {
return (
<Tab.Navigator>
<Tab.Screen name="Feed" component={FeedScreen} />
<Tab.Screen name="Profile" component={ProfileScreen} />
</Tab.Navigator>
);
}
Maaari mong ipugad ang tab na nabigador sa loob ng isang salansan na monarko o kabaligtaran nito. ginawang kaugalian ang mga tab icon na ginagamit ang prop na may .
Drower Nabigador
Isang monarkong nabigador ang nagtatapon ng isang kahon mula sa kaliwa, isinisiwalat ang mga bagay na panggalugad.
npm install @react-navigation/drawer
Ang huwarang setting:
import { createDrawerNavigator } from '@react-navigation/drawer';
const Drawer = createDrawerNavigator();
function AppDrawer() {
return (
<Drawer.Navigator>
<Drawer.Screen name="Home" component={HomeScreen} />
<Drawer.Screen name="Settings" component={SettingsScreen} />
</Drawer.Navigator>
);
}
Gamitin upang buksan at isara ang aparador sa paraang may katiyakan.
Mga Pugad na Nabigador
Kadalasang tinatawag ng mga panghuling kahoy na panggagamo (e.g., isang tab na nabigador sa loob ng isang salansan na nabigador) ang mga ibong naglalayag na magandang mamumugad.
Halimbawa: Isang salansan na naglalaman ng isang tab nabigador at isang screen ng mga setting:
function RootStack() {
return (
<Stack.Navigator>
<Stack.Screen name="Main" component={MainTabs} options={{ headerShown: false }} />
<Stack.Screen name="Settings" component={SettingsScreen} />
</Stack.Navigator>
);
}
Pag - uugnay at Malalim na Pag - uugnay
Ang reaksyong nabigasyon ay sumusuporta sa malalim na pag-uugnay upang hawakan ang mga URL na nagbubukas ng espesipikong mga screen. prop sa :
const linking = {
prefixes: ['myapp://', 'https://myapp.com'],
config: {
screens: {
Home: 'home',
Details: 'details/:itemId',
},
},
};
<NavigationContainer linking={linking}>
{/* navigators */}
</NavigationContainer>
Pagkatapos ay hawakan ang parating na URLs. Ito ay nagpapangyari sa mga tampok na tulad ng mga push notification na nag-uugnay sa isang espesipikong screen.
Umaagos ang Pagiging Totoo
Maraming app ang nangangailangan ng kondisyonal na nabigasyon batay sa awtentation state. Ang karaniwang disenyo ay ang pag-ikot ng nabigador sa root level:
function App() {
const [isSignedIn, setIsSignedIn] = useState(false);
return (
<NavigationContainer>
{isSignedIn ? <AppNavigator /> : <AuthNavigator />}
</NavigationContainer>
);
}
Kung hindi, gumamit ng isang salansan na may kondisyong mga screen.
Ang Pag - aasikaso at Pinakamabuting Gawain
- Gamitin (hindi ) para sa mas mahusay na pagganap at mga katutubong transaksyon.
- Bawasan ang dami ng mga screen na nakakabit agad.
- Pasahin lamang ang mga primitibong datos sa pamamagitan ng mga parameter upang maiwasan ang mga isyu ng serialization.
- Gamitin o para sa mga sangkap ng screen na madalas na muling-i-render.
- Iwasan ang mabibigat na kalkulasyon sa panahon ng mga transition; mag - download ng .
- Laging pangasiwaan ang pangyayari para sa di - nailigtas na mga pagbabago ay nag - uudyok.
Pagsasaayos
Ang react transvision ay nagbibigay ng isang influction, custizable, at advisionly na paraan upang pangasiwaan ang nabigasyon sa mga app. Sa pamamagitan ng pagdadalubhasa sa salansan, tab, drower, at mga namumugad na mga monarko, kasama ang pagpasa ng parameter, malalim na pag-uugnay, at mga daloy ng mapagkakatiwalaang pag-iral, makapagbubuo ka ng matitibay na karanasan sa mobile.[2] Para sa karagdagang detalye, tumukoy sa Opisyal na mga dokumentong pang-regrama[T] [[T] [[T] [[T] [[T] [[T] [[T] [[T] [[T] [[T] [[T] [[T] [[T] [[T] [[T] [[T] [[T] [[T] [[T] [[T] [[T] [[T] [[T] [[T] [[T] [[T] [[T] [[T] [[T] [[T] [[T] [[T] [[T