View: nima, konteyner xususiyatlari va React Native

Muallif: IT Sectr Nashr etilgan: 2026-07-05 O'qish vaqti: 10 daq

React Native dagi View komponenti foydalanuvchi interfeysining asosiy qurilish bloki, mobil platformalar uchun HTML div elementining analogidir. View istalgan chuqurlikdagi joylashishni qo'llab-quvvatlaydi, bolaviy elementlarning joylashuvini Flexbox orqali boshqaradi va teginish hodisalarini qayta ishlaydi. React Native Docs, 2024 ma'lumotlariga ko'ra, View ilovalarda eng ko'p ishlatiladigan komponentdir — deyarli har bir ekran joylashtirilgan View konteynerlaridan qurilgan. Komponent iOS da UIView va Android da android.view.View ga renderlanadi, bu esa native ishlash va foydalanish imkoniyatini ta'minlaydi.

Asosiy fikrlar

  • View — React Native ning asosiy konteyneri, mobil ekranlar uchun HTML div analogi
  • Komponent bolaviy elementlarni joylashtirish uchun Flexbox ni qo'llab-quvvatlaydi
  • View native iOS va Android ko'rinishlariga renderlanadi
  • Teginish hodisalari, imo-ishoralar va Animated API orqali animatsiyalarni qo'llab-quvvatlaydi
  • View standart ko'rinishga ega emas — stillar StyleSheet orqali o'rnatiladi

React Native da View nima

View — boshqa komponentlar uchun konteyner bo'lib xizmat qiladigan React Native ning asosiy komponentidir. U StyleSheet orqali stillashtirishni, Flexbox orqali joylashuvni, teginishni qayta ishlashni, animatsiyalar va transformatsiyalarni qo'llab-quvvatlaydi. View native konteyner elementlari ustidagi abstraksiyadir: iOS da UIView va Android da android.view.View.

React Native da HTML elementlaridan foydalanish mumkin emas — ularning o'rniga barcha joylashuvlar View dan quriladi. Hatto Text va Image ham odatda joylashtirish uchun View ga o'raladi. Komponent bo'sh (faqat konteyner) yoki istalgan chuqurlikdagi istalgan sondagi bolaviy elementlarni o'z ichiga olishi mumkin.

View bir JavaScript kodidan ikkala platformada renderlashni qo'llab-quvvatlaydi. Flexbox xususiyatlari, bo'shliqlar, fon, soyalar va chegaralar iOS va Android da bir xil ishlaydi. Platforma farqlari minimal — masalan, iOS da soyalar shadowColor/shadowOffset dan foydalanadi, Android da esa elevation.

React Native Layout Docs, 2024 ma'lumotlariga ko'ra, View mobil qurilmalar uchun optimallashtirilgan: flatten optimallashtirishda keraksiz native ko'rinishlarni yaratmaydi va ota-ona stillari o'zgarganda kaskad yangilanishini to'g'ri qayta ishlaydi.

View komponentining xususiyatlari va API si

View komponenti tashqi ko'rinish, joylashuv va interaktivlikni boshqarish uchun boy props to'plamiga ega. Barcha propslar bir necha toifaga bo'linadi: stillashtirish, teginish hodisalari, foydalanish imkoniyati va platforma xususiyatlari. Keling, asosiy guruhlarni ko'rib chiqaylik.

View ning stil propslari

View mobil platformalar uchun barcha standart CSS xususiyatlarini qo'llab-quvvatlaydi. Ulardan asosiylari: joylashtirish uchun flexDirection, justifyContent, alignItems; bo'shliqlar uchun margin, padding; tashqi ko'rinish uchun backgroundColor, borderRadius; o'lchamlar uchun width, height, maxHeight.

Teginish hodisalari va imo-ishoralar

View onStartShouldSetResponder, onMoveShouldSetResponder va onResponderGrant propslari orqali teginish hodisalarini qayta ishlashi mumkin. Bu hodisalar kutubxonasiz maxsus imo-ishoralarni amalga oshirish imkonini beradi. Standart bosishlar uchun onTouchStart, onTouchEnd va onPress (Pressable yoki TouchableOpacity orqali) ishlatiladi.

Platforma propslari

iOS da soyalar uchun shadowColor, shadowOffset, shadowOpacity, shadowRadius mavjud. Android da bu xususiyatlar e'tiborga olinmaydi — ularning o'rniga elevation ishlatiladi. onLayout callbacklari View o'lchamlari o'zgarganda chaqiriladi, bu adaptiv joylashuvlar uchun foydalidir.

View va Flexbox bilan joylashuv

Flexbox React Native dagi yagona joylashuv mexanizmidir (Grid va Float mavjud bo'lgan Web dan farqli o'laroq). Barcha elementlarni joylashtirish View komponentining Flexbox xususiyatlari orqali amalga oshiriladi. View da standart flexDirection column ga o'rnatilgan, Web dagi kabi row emas, bu mobil ekranlarning vertikal yo'nalishiga mos keladi.

View dagi asosiy Flexbox xususiyatlari

flexDirection asosiy o'qning yo'nalishini belgilaydi: column (standart) yoki row. justifyContent asosiy o'q bo'ylab taqsimotni boshqaradi (flex-start, center, space-between). alignItems — ko'ndalang o'q bo'ylab (stretch — standart qiymat). flex bolaviy element uchun mavjud joyning ulushini belgilaydi.

js
import React from 'react';
import { View, Text, StyleSheet } from 'react-native';

const CardLayout = () => (
    <View style={styles.card}>
        <View style={styles.row}>
            <View style={styles.avatar} />
            <View style={styles.content}>
                <Text style={styles.name}>John Doe</Text>
                <Text style={styles.role}>Developer</Text>
            </View>
        </View>
    </View>
);

Misolda odatiy tuzilma ko'rsatilgan: tashqi View — karta, ichki row — avatar va matn blokli qator, content — ism va rol bilan ustun. Bunday joylashtirilgan View tuzilmasi har bir React Native ekrani uchun standartdir.

View va HTML div o'rtasidagi farqlar

View kontseptual jihatdan HTML div ga o'xshash bo'lsa-da, ular o'rtasida kodni Web dan React Native ga ko'chirishda muhim bo'lgan asosiy farqlar mavjud. Bu farqlar renderlash, stillar va standart xatti-harakatga tegishli.

XususiyatView (React Native)div (HTML)
Standart flexDirectioncolumnrow (block kontekstida)
width/heightStandart ota-onaning 100%mazmunga qarab auto
SkrollashQo'llab-quvvatlanmaydi (ScrollView kerak)overflow: auto/scroll
SoyalariOS: shadow*, Android: elevationbox-shadow
Hodisalarni qayta ishlashResponder tizimiDOM hodisalari
Native renderUIView / android.view.ViewDOM elementi

Eng muhim farq — standart flexDirection: column. Bu shuni anglatadiki, aniq belgilanmagan holda bolaviy elementlar vertikal joylashadi, gorizontal emas. Ikkinchi farq: View ning width va height i standart ota-onaning barcha mavjud joyiga yoyiladi (CSS dagi width: 100% analogi).

View bilan amaliy misollar

React Native ilovalarida View dan foydalanishning ikkita haqiqiy misolini ko'rib chiqaylik: tarkibni butun ekranga markazlashtirish va kartalardan adaptiv tarmoq yaratish. Ikkala naqsh ham har bir loyihada uchraydi.

1-misol: markazlashtirish bilan bo'sh ekran

Bo'sh holat (empty state) yaratish uchun flex: 1 va ikkala o'qda markazlashtirish bilan View ishlatiladi. Bu yuklash, xato va bo'sh ro'yxat ekranlari uchun standart naqshdir.

js
const EmptyState = ({ message }) => (
    <View style={styles.container}>
        <Text style={styles.icon}>{icon}</Text>
        <Text style={styles.message}>{message}</Text>
    </View>
);

const styles = StyleSheet.create({
    container: { flex: 1, justifyContent: 'center', alignItems: 'center' },
    icon: { fontSize: 48 },
    message: { fontSize: 16, color: '#666', marginTop: 16 },
});

justifyContent: center va alignItems: center kombinatsiyasi flex: 1 bo'lgan View da tarkibni ikkala o'qda butun ekranga markazlashtiradi. Bu React Native da View ning eng keng tarqalgan foydalanish naqshidir.

2-misol: Flexbox bilan karta tarmog'i

Ikki ustunli mahsulot yoki maqolalarni ko'rsatish uchun flexDirection: row, flexWrap: wrap va doimiy enli bolaviy View lar bilan View ishlatiladi. Bu naqsh React Native da CSS Grid ni o'rnini bosadi.

js
const ProductGrid = ({ products }) => (
    <View style={styles.grid}>
        {products.map((product) => (
            <View key={product.id} style={styles.card}>
                <Image source={{ uri: product.image }} />
                <Text>{product.name}</Text>
            </View>
        ))}
    </View>
);

const styles = StyleSheet.create({
    grid: {
        flexDirection: 'row',
        flexWrap: 'wrap',
        justifyContent: 'space-between',
    },
    card: { width: '48%', marginBottom: 16 },
});

Bu misolda flexWrap: wrap bo'lgan tashqi View CSS Grid ning analogi sifatida ishlaydi. Har bir karta enining 48% ni egallaydi, ustunlar orasida bo'shliqlar qoladi. Bu kataloglar va kontent lentalari uchun odatiy naqshdir.

Tez-tez beriladigan savollar

View React Native da div dan qanday farq qiladi?

View standart flexDirection: column ga ega (HTML dagi kabi row emas), skrollashni qo'llab-quvvatlamaydi, width standart ota-onaning 100% ga yoyiladi, soyalar esa iOS da shadow* va Android da elevation orqali o'rnatiladi.

View bosiladigan bo'lishi mumkinmi?

Ha, View onTouchStart, onTouchEnd va Responder tizimi orqali teginish hodisalarini qayta ishlashi mumkin. Biroq tugmalar uchun TouchableOpacity, Pressable yoki Button dan foydalanish yaxshiroq — ular vizual fikr-mulohazani ta'minlaydi va Accessibility API ga mos keladi.

Har bir element uchun View ishlatish kerakmi?

Shart emas. React Native View flattening orqali renderlashni optimallashtiradi — stillari va hodisalari bo'lmagan ortiqcha View lar native daraxtdan olib tashlanadi. Biroq kodning o'qilishi uchun View dan interfeysning mantiqiy bloklari uchun konteyner sifatida foydalanish yaxshiroq.

Dumaloq View ni qanday qilish mumkin?

borderRadius ni en va balandlikning yarmiga teng qilib o'rnating (masalan, width: 50, height: 50, borderRadius: 25). Agar en va balandlik bir xil bo'lsa, bunday View aylanaga aylanadi. Avatarlar uchun bu standart naqshdir.

View ni shaffof qanday qilish mumkin?

opacity ni 0 dan 1 gacha o'rnating (masalan, opacity: 0.5). Shuningdek RGBA bilan backgroundColor dan foydalanish mumkin (backgroundColor: 'rgba(0,0,0,0.5)'). Farqi shundaki, opacity butun konteyner va uning tarkibiga qo'llaniladi, RGBA esa faqat fonga.

Xulosa

  • View — React Native ning asosiy konteyneri, interfeys qurish uchun HTML div analogi
  • Komponent standart flexDirection: column bilan Flexbox ni qo'llab-quvvatlaydi
  • View native UIView (iOS) va android.view.View (Android) ga renderlanadi
  • Asosiy propslar: Flexbox stil xususiyatlari, Responder tizimi orqali teginish hodisalari, o'lchamlar uchun onLayout
  • View flattening avtomatik ravishda ortiqcha konteynerlarni native daraxtdan olib tashlaydi
  • Tugmalar uchun onTouch bilan View o'rniga TouchableOpacity yoki Pressable dan foydalaning
  • Joylashtirilgan View lar — React Native ilovasidagi har bir ekranning standart arxitekturasi

Biz kalit topshirig'i bilan mobil ilovani ishlab chiqamiz

IT Sectr 2017-yildan beri startaplar va korxonalar uchun iOS va Android ilovalarini yaratadi. Biz sizga maslahat beramiz va eng yaxshi yechimni taklif qilamiz.

Loyihani muhokama qilish

Shuningdek o'qing