View: nedir, konteyner özellikleri ve React Native

Yazar: IT Sectr Yayınlanma: 2026-07-05 Okuma süresi: 10 dk

React Native'deki View bileşeni, kullanıcı arayüzünün temel yapı taşıdır ve mobil platformlar için HTML div öğesinin bir benzeridir. View herhangi bir derinlikte iç içe yerleşmeyi destekler, Flexbox aracılığıyla alt öğelerin düzenini yönetir ve dokunma olaylarını işler. React Native Docs, 2024'e göre View, uygulamalarda en sık kullanılan bileşendir — neredeyse her ekran iç içe View konteynerlerinden oluşturulur. Bileşen, iOS'ta yerel UIView ve Android'de android.view.View olarak render edilir ve yerel performans ile erişilebilirlik sağlar.

Önemli Noktalar

  • View — React Native'in temel konteyneri, mobil ekranlar için HTML div benzeri
  • Bileşen, alt öğeleri konumlandırmak için Flexbox'ı destekler
  • View, iOS ve Android'in yerel görünümlerinde render edilir
  • Animated API aracılığıyla dokunma olaylarını, jestleri ve animasyonları destekler
  • View varsayılan olarak görsel bir temsile sahip değildir — stiller StyleSheet ile ayarlanır

React Native'de View Nedir

View, diğer bileşenler için konteyner görevi gören temel bir React Native bileşenidir. StyleSheet ile stil verme, Flexbox ile düzen, dokunma işleme, animasyonlar ve dönüşümleri destekler. View, yerel konteyner öğeleri üzerinde bir soyutlamadır: iOS'ta UIView ve Android'de android.view.View.

React Native'de HTML öğelerini kullanmak mümkün değildir — bunun yerine, tüm düzenler View'dan oluşturulur. Text ve Image bile genellikle konumlandırma için View'a sarılır. Bileşen boş olabilir (sadece bir konteyner) veya herhangi bir iç içe yerleşme derinliğinde herhangi bir sayıda alt öğe içerebilir.

View, tek bir JavaScript kod tabanından her iki platformda da render desteği sağlar. Flexbox özellikleri, kenar boşlukları, arka plan, gölgeler ve kenarlıklar iOS ve Android'de aynı şekilde çalışır. Platform farklılıkları minimumdur — örneğin, iOS'taki gölgeler shadowColor/shadowOffset kullanırken, Android'de elevation kullanılır.

React Native Layout Docs, 2024'e göre View, mobil cihazlar için optimize edilmiştir: düzleştirme optimizasyonu sırasında ekstra yerel görünümler oluşturmaz ve üst stiller değiştiğinde basamaklı güncellemeleri doğru şekilde işler.

View Bileşeninin Özellikleri ve API'si

View bileşeni, görünüm, düzen ve etkileşimi kontrol etmek için zengin bir prop setine sahiptir. Tüm proplar birkaç kategoriye ayrılır: stil propları, dokunma olayları, erişilebilirlik ve platforma özgü özellikler. Ana grupları inceleyelim.

View Stil Propları

View, mobil platformlar için tüm standart CSS özelliklerini destekler. Başlıcaları şunlardır: konumlandırma için flexDirection, justifyContent, alignItems; boşluk için margin, padding; görünüm için backgroundColor, borderRadius; boyutlandırma için width, height, maxHeight.

Dokunma Olayları ve Jestler

View, onStartShouldSetResponder, onMoveShouldSetResponder ve onResponderGrant propları aracılığıyla dokunma olaylarını işleyebilir. Bu olaylar, kütüphane olmadan özel jestler uygulamaya olanak tanır. Standart dokunuşlar için onTouchStart, onTouchEnd ve onPress (Pressable veya TouchableOpacity aracılığıyla) kullanılır.

Platforma Özgü Proplar

iOS'ta gölgeler için shadowColor, shadowOffset, shadowOpacity, shadowRadius mevcuttur. Android'de bu özellikler yok sayılır — bunun yerine elevation (kart benzeri bir gölge) kullanılır. onLayout geri çağrısı, View'ın boyutları değiştiğinde tetiklenir ve uyarlanabilir düzenler için kullanışlıdır.

View ve Flexbox ile Düzen

Flexbox, React Native'deki tek düzen mekanizmasıdır (Grid ve Float'ın bulunduğu web'in aksine). Tüm öğe konumlandırması, View bileşeninin Flexbox özellikleri aracılığıyla yapılır. Varsayılan olarak, View'da flexDirection, web'deki gibi row değil, mobil ekranların dikey yönüne uygun olarak column olarak ayarlanmıştır.

View'da Temel Flexbox Özellikleri

flexDirection ana eksen yönünü belirler: column (varsayılan) veya row. justifyContent ana eksen boyunca dağılımı kontrol eder (flex-start, center, space-between). alignItems — çapraz eksen boyunca (stretch — varsayılan değer). flex, bir alt öğe için kullanılabilir alanın oranını belirtir.

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>
);

Örnek tipik bir yapıyı gösterir: dış View — kart, iç row — avatar ve metin bloğu olan bir satır, content — isim ve rol içeren bir sütun. Bu iç içe View yapısı, herhangi bir React Native ekranı için standarttır.

View ve HTML div Arasındaki Farklar

View kavramsal olarak HTML div'e benzese de, web'den React Native'e kod taşırken anlaşılması gereken önemli farklılıklar vardır. Bu farklılıklar render etme, stiller ve varsayılan davranışla ilgilidir.

ÖzellikView (React Native)div (HTML)
Varsayılan flexDirectioncolumnrow (block bağlamında)
width/heightVarsayılan olarak üst öğenin %100'üiçeriğe göre auto
KaydırmaDesteklenmez (ScrollView gerekir)overflow: auto/scroll
GölgeleriOS: shadow*, Android: elevationbox-shadow
Olay İşlemeResponder sistemiDOM Olayları
Yerel RenderUIView / android.view.ViewDOM öğesi

En önemli fark, varsayılan olarak flexDirection: column olmasıdır. Bu, açık bir yapılandırma olmadan alt öğelerin yatay değil dikey olarak düzenlendiği anlamına gelir. İkinci fark: View'ın genişliği ve yüksekliği varsayılan olarak üst öğenin tüm kullanılabilir alanını dolduracak şekilde genişler (CSS'deki width: %100'e benzer).

View ile Pratik Örnekler

React Native uygulamalarında View kullanımının iki gerçek örneğine bakalım: içeriği tam ekranda ortalamak ve duyarlı bir kart ızgarası oluşturmak. Her iki desen de her projede görülür.

Örnek 1: Ortalamalı Yer Tutucu Ekran

Boş bir durum oluşturmak için flex: 1 ve her iki eksende ortalamaya sahip bir View kullanılır. Bu, yükleme ekranları, hata durumları ve boş listeler için standart bir desendir.

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 },
});

flex: 1 olan bir View'da justifyContent: center ve alignItems: center kombinasyonu, içeriği tam ekranda her iki eksende ortalar. Bu, React Native'de View kullanımının en yaygın desenidir.

Örnek 2: Flexbox ile Kart Izgarası

Ürünlerin veya makalelerin iki sütununu görüntülemek için flexDirection: row, flexWrap: wrap ve sabit genişlikte alt View'lar kullanılır. Bu desen, React Native'de CSS Grid'in yerini alır.

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 örnekte, flexWrap: wrap ile dış View, CSS Grid'in bir benzeri olarak çalışır. Her kart genişliğin %48'ini kaplar ve sütunlar arasında boşluk bırakır. Bu, kataloglar ve içerik akışları için tipik bir desendir.

Sıkça Sorulan Sorular

React Native'de View, div'den nasıl farklıdır?

View varsayılan olarak flexDirection: column'a sahiptir (HTML'deki flex konteyner gibi row değil), kaydırmayı desteklemez, genişlik varsayılan olarak üst öğenin %100'üne kadar uzanır ve gölgeler iOS'ta shadow* özellikleri ve Android'de elevation ile ayarlanır.

View tıklanabilir olabilir mi?

Evet, View, onTouchStart, onTouchEnd ve Responder sistemi aracılığıyla dokunma olayı işlemeyi destekler. Ancak, düğmeler için TouchableOpacity, Pressable veya Button kullanmak daha iyidir — görsel geri bildirim sağlarlar ve Erişilebilirlik API'sine uygundurlar.

Her öğe için View kullanmam gerekir mi?

Gerekli değil. React Native, View flattening yoluyla render'ı optimize eder — stilleri ve olayları olmayan ekstra View'lar yerel ağaçtan kaldırılır. Ancak, kod okunabilirliği için View'ı mantıksal arayüz blokları için konteyner olarak kullanmak daha iyidir.

Dairesel bir View nasıl yapılır?

borderRadius'u genişlik ve yüksekliğin yarısına eşit olarak ayarlayın (örneğin, width: 50, height: 50, borderRadius: 25). Genişlik ve yükseklik aynıysa, View bir daire haline gelir. Bu, avatarlar için standart desendir.

View nasıl şeffaf yapılır?

opacity'i 0 ile 1 arasında ayarlayın (örneğin, opacity: 0.5). Ayrıca RGBA ile backgroundColor kullanabilirsiniz (backgroundColor: 'rgba(0,0,0,0.5)'). Fark, opacity'nin tüm konteyner ve içeriğine uygulanması, RGBA'nın ise yalnızca arka plana uygulanmasıdır.

Özet

  • View — React Native'in temel konteyneri, arayüz oluşturmak için HTML div benzeri
  • Bileşen, varsayılan olarak flexDirection: column ile Flexbox'ı destekler
  • View, yerel UIView (iOS) ve android.view.View (Android) olarak render edilir
  • Anahtarlar: Flexbox stil özellikleri, Responder sistemi ile dokunma olayları, boyutlar için onLayout
  • View flattening, yerel ağaçtan ekstra konteynerleri otomatik olarak kaldırır
  • Düğmeler için onTouch ile View yerine TouchableOpacity veya Pressable kullanın
  • İç içe View'lar, React Native uygulamasındaki herhangi bir ekranın standart mimarisidir

Anahtar teslim bir mobil uygulama geliştireceğiz

IT Sectr, 2017'den beri girişimler ve işletmeler için iOS ve Android uygulamaları oluşturmaktadır. Size danışmanlık yapacak ve en iyi çözümü önereceğiz.

Projeyi tartış

Ayrıca okuyun