Table of Contents
مقدمه مقدماتی
React Native ساخت برنامه های موبایل بومی را با جاوا اسکریپت و React. یک جنبه حیاتی از توسعه برنامه های تلفن همراه را فعال می کند: هدایت کاربران از طریق صفحه نمایش های مختلف و ویژگی های یکپارچه. React Navigation محبوب ترین، کتابخانه جامعه محور برای اجرای ناوبری در برنامه های React Native است. آن یک API declarative API، پشته، و الگوهای ناوبری و هدایت کننده های خاص را برای هدایت می کند.
پیش بینی ها و نصب ها
قبل از استفاده از React Navigation، اطمینان حاصل کنید که یک پروژه React Native دارید.اگر تازه شروع می کنید، از React Native CLI یا Expo استفاده کنید.
نصب بسته های Core
بسته های مورد نیاز را از طریق npm یا نخ نصب کنید.کتابخانه اصلی و وابستگی های اصلی آن عبارتند از:
npm install @react-navigation/native
سپس کتابخانه های پشتیبانی شده را نصب کنید که React Navigation به مدیریت صفحه نمایش و کنترل منطقه امن بستگی دارد:
npm install react-native-screens react-native-safe-area-context
اگر از Expo استفاده می کنید، این کتابخانه ها قبلاً شامل پروژه های React Native هستند، دستورالعمل های لینک را در مستندات رسمی دنبال کنید تا اطمینان حاصل شود که ماژول های بومی به درستی مرتبط هستند (autolinking این را برای React Native 0.60+).
نصب یک Navigator
در این میان، به چند دسته از عوامل مختلف، به صورت زیر اشاره می شود:
npm install @react-navigation/native-stack
سایر داوران مانند و [[FLT1]] به صورت جداگانه نصب شده اند.
npm install @react-navigation/bottom-tabs
npm install @react-navigation/drawer
مفاهیم هسته
React Navigation حدود سه بلوک اصلی ساختمان سازی ساخته شده است:
- [[۱] [۱۰] [۱] [۱۰] [۱] [۱]] [۱]] [۱] [۱]] [۱] [۱]] [۱]] [۱] [۱] [۱]] [۱] [۱۰] [۱] [۱]] [۱] [۱] [۱] [۱] [۱] [۱] [۱] [۱] [۲] [۲] [۱] [۲] [۲] [۲] [۲] [۱] [۱] [۱] [۲] [۲] [۱] [۱] [۲] [۲] [۲] [۲]]] [۱] [۱]]] [۲] [۱] [۱] [۱] [۱] [۱] [۱] [۱] [۱] [۱] [۱] [۱] [۲] [۲] [۱] [۱] [۱] [۱] [۱] [۱] [۱]] [۱] [۱] [۱] [۱] [۲] [۱] [۲] [۱] [۲] [۲] [۲]] [۱] [۱
- [[۱] [۱۰] [۱] [۱۰] [۱]] - اجزایی که الگوی ناوبری (stack, tab, menu) را تعریف می کنند.
- ] - اجزای فردی که نشان دهنده یک نمایش یا صفحه در برنامه است.
هر گونه تنظیمات ناوبری باید در یک (FLT:4) پیچیده شود، این ظرف به طور معمول در ریشه اجزای برنامه قرار می گیرد.
راه اندازی یک Stack Navigator
پیمایش پشته یک صفحه نمایش آخر را مدیریت می کند.این از انیمیشن های انتقال و حرکات پلتفرم بومی به طور پیش فرض استفاده می کند.
ابتدا، ماژول های ضروری را وارد کنید:
import { NavigationContainer } from '@react-navigation/native';
import { createNativeStackNavigator } from '@react-navigation/native-stack';
یک مثال پشته ایجاد کنید:
const Stack = createNativeStackNavigator();
قسمت اصلی برنامه خود را تعریف کنید:
function App() {
return (
<NavigationContainer>
<Stack.Navigator>
<Stack.Screen name="Home" component={HomeScreen} />
<Stack.Screen name="Details" component={DetailsScreen} />
</Stack.Navigator>
</NavigationContainer>
);
}
هر کدام از آنها نیازمند یک (FLT:9) و یک (FLT 10) است.
ایجاد صفحه نمایش و حرکت
صفحه نمایش ها دو جزء استاندارد React هستند که دو منبع مهم را دریافت می کنند: و [FLT13] شی روش هایی برای حرکت بین صفحه نمایش های زیر یک صفحه نمایش معمولی خانگی است:
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>
);
}
صفحه نمایش جزئیات نیازی به استفاده از نیروی ناوبری ندارد مگر اینکه لازم باشد به سمت دیگر حرکت کند.
function DetailsScreen({ route }) {
return (
<View style={{ flex: 1, alignItems: 'center', justifyContent: 'center' }}>
<Text>Details Screen</Text>
</View>
);
}
روش های ناوبری
React Navigation چندین روش را از طریق [FLT16] ارائه می دهد:
- [[۱] [۱۰] [۱] [۱] [۱]] [۱]] [۱]] [۱]] [۱]] - به صفحه نمایش حرکت می کند، و اگر در پشته وجود داشته باشد، نمونه ای از آن را دوباره استفاده می کند.
- push (نام، پاراماس) همیشه یک صفحه نمایش جدید را بر روی پشته فشار می دهد، حتی اگر همان صفحه در حال حاضر در پشته باشد.
- (به جز این که در آن زمان به صورت زیر به صورت زیر به صورت زیر به صورت زیر به صورت زیر به صورت زیر عمل می کند.)
- محل (نام، پارامز) جایگزین صفحه نمایش فعلی با یک جدید، حذف جریان از تاریخ.
- [[۱] [۱] [۱] [۱] [۱] [۱]] [۱]] [۱]] [۱]] [۱]] [۱]] [۱]] [۱]] [۱]] [۱]] [۱] [۱]] [۱]] [۱] [۱]] [۱] [۱]] [۱] [۱] [۱] [۱] [۱]] [۱] [۱] [۱] [۱] [۵] [۱] [۱]] [۱] [۱]]] [۱] [۱]] [۱] [۱] [۱]]]]] [۱]]]] [۱] [۱] [۱] [۱] [۱] [۱] [۱] [۱] [۱] [۱] [۱] [۱]]]] [۱] [۱] [۱] [۱] [۱] [۱] [۱] [۱]] [۱] [۱] [۱] [۱] [۱] [۱] [۱]]]]]] [۵] [۵]]] [۱] [۱
به عنوان مثال، برای فشار دادن یک نمونه جدید از صفحه نمایش جزئیات و پارامترهای عبور:
navigation.push('Details', { itemId: 42, otherParam: 'anything' });
ارسال پارامترهای بین صفحه نمایش
داده ها را می توان از طریق استدلال دوم به صفحه نمایش منتقل کرد (FLT 18) یا [FLT 19] ، صفحه نمایش دریافت کننده به این پارامترها از طریق [FLT 20 ] دسترسی دارد.
// In HomeScreen
navigation.navigate('Details', { userId: 123 });
// In DetailsScreen
function DetailsScreen({ route }) {
const { userId } = route.params;
return <Text>User ID: {userId}</Text>;
}
مقادیر پارامتر پیش فرض را با استفاده از [FLT 22] بر روی جزء صفحه نمایش تنظیم کنید:
<Stack.Screen
name="Details"
component={DetailsScreen}
initialParams={{ itemId: 0 }}
/>
گزینه های ناوبری Configure Navigation Options
هر صفحه می تواند حجم و حجم آن را به صورت زیر و یا در هر صفحه ای از آن را به صورت زیر تنظیم کند.
سفارشی سازی Header Customization
<Stack.Screen
name="Details"
component={DetailsScreen}
options={{
title: 'Details',
headerStyle: { backgroundColor: '#f4511e' },
headerTintColor: '#fff',
headerTitleStyle: { fontWeight: 'bold' },
}}
/>
گزینه های پویا را می توان با استفاده از تابعی تنظیم کرد که (FLT:28) را دریافت می کند.
options={({ route }) => ({ title: route.params.name })}
Tab Navigator
ناوبری Tab برای بخش های برنامه سطح بالا رایج است. نصب زبانه های پایین:
npm install @react-navigation/bottom-tabs
یک مرورگر زبانه ایجاد کنید و آن را با پشته خود ترکیب کنید:
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>
);
}
شما می توانید در داخل یک پیمایش یا برعکس، آیکون های زبانه سفارشی سازی را با استفاده از تبلیغ کنید.
خرید بازی The Navigator
یک پیمایش کننده کشوی را از سمت چپ می چرخاند و موارد ناوبری را آشکار می کند:
npm install @react-navigation/drawer
مثال:
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>
);
}
استفاده از آن را به صورت شفاف و بسته به آن را به صورت موضوعی آغاز کنید.
Nested Navigators
برنامه های پیچیده اغلب پیمایش کنندگان (به عنوان مثال، یک هدایت کننده زبانه در داخل یک پیمایش پشته) را هدایت می کند. React Navigation به طور ماهرانه ای به لانه می پردازد. پروپان ارائه شده برای هر صفحه نمایش می تواند روش های یک بازدید کننده والدین را در صورت نیاز فراخوانی کند.
مثال: یک پشته حاوی یک پیمایش کننده زبانه و یک صفحه تنظیمات است:
function RootStack() {
return (
<Stack.Navigator>
<Stack.Screen name="Main" component={MainTabs} options={{ headerShown: false }} />
<Stack.Screen name="Settings" component={SettingsScreen} />
</Stack.Navigator>
);
}
لینک سازی و Deep Linking
React Navigation از لینک های عمیق برای کنترل URL هایی که صفحه نمایش های خاص را باز می کنند پشتیبانی می کند.
const linking = {
prefixes: ['myapp://', 'https://myapp.com'],
config: {
screens: {
Home: 'home',
Details: 'details/:itemId',
},
},
};
<NavigationContainer linking={linking}>
{/* navigators */}
</NavigationContainer>
سپس URL های ورودی را کنترل کنید، این ویژگی ها را مانند اعلان های فشار به صفحه نمایش خاص را فعال می کند.
جریان های اعتباری
بسیاری از برنامه ها نیاز به ناوبری مشروط بر اساس حالت احراز هویت دارند.یک الگوی مشترک این است که به سمت هدایت کننده در سطح ریشه تغییر دهد:
function App() {
const [isSignedIn, setIsSignedIn] = useState(false);
return (
<NavigationContainer>
{isSignedIn ? <AppNavigator /> : <AuthNavigator />}
</NavigationContainer>
);
}
به طور جایگزین، از یک پشته با صفحه نمایش مشروط استفاده کنید.از تکان دادن با نگه داشتن وعده یا حالت تا به امروز خودداری کنید.
عملکرد و بهترین تمرین ها
- استفاده از برای عملکرد بهتر و انتقال بومی.
- تعداد صفحه نمایش های نصب شده در یک بار را به حداقل برسانید. React Navigation صفحه نمایش های پنهان را به طور پیش فرض برای پیمایش کنندگان پشته، اما برای بازدید کنندگان برگه، شما می توانید بارگذاری تنبل را پیکربندی کنید.
- فقط داده های ابتدایی را از طریق پارامترهایی برای جلوگیری از مسائل مربوط به سریال سازی ارسال کنید.
- از یا برای قطعات صفحه نمایش استفاده کنید که اغلب بارگیری می شوند.
- از محاسبات سنگین در هنگام انتقال ناوبری خودداری کنید؛ کار با
- همواره در این زمینه به صورت زیر عمل کنید.
نتیجه گیری
React Navigation یک راه شهودی، قابل تنظیم و اجراکننده برای مدیریت ناوبری در React Native appها را فراهم می کند.با تسلط بر پشته، زبانه، کشو و پیمایش کنندگان در کنار انتقال پارامتر، پیوند عمیق و جریان های تأیید اعتبار، می توانید تجارب قوی موبایل را ایجاد کنید، برای جزئیات بیشتر، به [F:0] اسناد ناوبری رسمی [F:1] و اجرای [F:2.