0Pricing
React Academy · Pelajaran

Penataan Gaya dengan API StyleSheet & Flexbox

Tulis gaya seluler menggunakan StyleSheet.create dan Flexbox tanpa nama class CSS.

Penataan Gaya dengan API StyleSheet & Flexbox adalah pelajaran React Academy gratis di CoddyKit. Ini adalah pelajaran 2 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar React Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus React Academy mencakup 4 pelajaran total.

Tidak Ada CSS di React Native

React Native menggunakan API gaya JavaScript — tanpa berkas CSS, tanpa nama kelas, dan tanpa cascading. Gaya berupa objek JavaScript yang diterapkan melalui prop style.

StyleSheet.create()

Bungkus objek gaya dalam StyleSheet.create() untuk performa yang lebih baik (gaya divalidasi dan dioptimalkan sekali) serta pelengkapan otomatis IDE.

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

function Card() {
  return (
    <View style={styles.card}>
      <Text style={styles.title}>Hello</Text>
    </View>
  );
}

const styles = StyleSheet.create({
  card: { padding: 16, backgroundColor: '#fff', borderRadius: 8, shadowColor: '#000', shadowOpacity: 0.1, elevation: 2 },
  title: { fontSize: 18, fontWeight: 'bold', color: '#111' },
});

Gaya Sebaris

Terapkan gaya secara langsung melalui prop style. Sintaks array menggabungkan beberapa objek gaya — gaya yang ditulis belakangan menimpa gaya sebelumnya.

<View style={{ padding: 16, backgroundColor: '#f5f5f5' }} />

// Array merging:
<Text style={[styles.base, isActive && styles.active, { marginTop: 8 }]} />

Flexbox di React Native

React Native menggunakan Flexbox secara default untuk tata letak, tetapi dengan nilai default yang berbeda dari web: flexDirection secara default bernilai 'column' (bukan 'row'), dan flex: 1 mengisi ruang yang tersedia.

const styles = StyleSheet.create({
  container: {
    flex: 1,                   // fill available space
    flexDirection: 'column',   // default in RN (web default is 'row')
    justifyContent: 'center',  // main axis alignment
    alignItems: 'center',      // cross axis alignment
  },
});

Tata Letak Baris

Gunakan flexDirection: 'row' untuk menata elemen anak secara horizontal, menyerupai display: flex; flex-direction: row pada CSS.

const styles = StyleSheet.create({
  row: {
    flexDirection: 'row',
    alignItems: 'center',
    gap: 12, // gap is supported in RN 0.71+
  },
});

<View style={styles.row}>
  <Image source={avatar} />
  <Text>{username}</Text>
</View>

flex vs lebar/tinggi

Gunakan flex: N untuk ukuran proporsional. flex: 1 mengisi semua ruang yang tersisa; flex: 2 mendapatkan ruang dua kali lipat dibandingkan elemen saudara dengan flex: 1.

// Sidebar takes 1/3, content takes 2/3:
<View style={{ flexDirection: 'row', flex: 1 }}>
  <View style={{ flex: 1, backgroundColor: '#eee' }}>Sidebar</View>
  <View style={{ flex: 2 }}>Content</View>
</View>

Pemosisian Absolut

Gunakan position: 'absolute' bersama top, right, bottom, dan left untuk elemen yang ditumpangkan — identik dengan pemosisian absolut CSS di dalam induk relatif.

const badge = StyleSheet.create({
  badge: {
    position: 'absolute',
    top: -4,
    right: -4,
    width: 16,
    height: 16,
    borderRadius: 8,
    backgroundColor: 'red',
  },
});

Gaya Khusus Platform

Gunakan Platform.OS atau Platform.select() untuk menerapkan gaya yang berbeda di iOS dan Android.

import { Platform } from 'react-native';

const styles = StyleSheet.create({
  shadow: {
    ...Platform.select({
      ios: { shadowColor: '#000', shadowOpacity: 0.2, shadowRadius: 4 },
      android: { elevation: 4 },
    }),
  },
});

Warna

React Native menerima string warna CSS (heksadesimal, rgb, dan bernama) serta API PlatformColor untuk warna sistem.

import { PlatformColor } from 'react-native';

// System color — adapts to dark mode automatically:
const labelColor = PlatformColor('label', '#000'); // iOS 'label' semantic color

Gaya Dinamis dengan Props

Hitung gaya dari props di dalam komponen. Teruskan fungsi ke StyleSheet atau hitung objek gaya secara langsung.

function Badge({ color, size = 16 }: { color: string; size?: number }) {
  return (
    <View
      style={[
        styles.badge,
        { backgroundColor: color, width: size, height: size, borderRadius: size / 2 },
      ]}
    />
  );
}

const styles = StyleSheet.create({ badge: { position: 'absolute' } });

Pemeriksaan Singkat

Apa nilai default flexDirection di React Native (yang berbeda dari web)?

Ringkasan

Gunakan StyleSheet.create() untuk gaya yang dioptimalkan dan terapkan melalui prop style. Flexbox React Native secara default menggunakan flexDirection: 'column', dan flex: 1 mengisi ruang yang tersisa. Gunakan Platform.select() untuk gaya bayangan khusus OS.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Penataan Gaya dengan API StyleSheet & Flexbox” gratis?

Ya — teks lengkap “Penataan Gaya dengan API StyleSheet & Flexbox” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus React Academy, upgrade ke CoddyKit PRO. Kursus React Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Penataan Gaya dengan API StyleSheet & Flexbox”?

Tulis gaya seluler menggunakan StyleSheet.create dan Flexbox tanpa nama class CSS. Kamu berlatih React Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai React Academy?

Tidak diperlukan pengalaman sebelumnya. React Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 2 dari 4.

Berapa lama pelajaran “Penataan Gaya dengan API StyleSheet & Flexbox” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran React Academy ini?

Ya. Setiap pelajaran React Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Komponen Inti React Native vs DOM Web
  2. Penataan Gaya dengan API StyleSheet & Flexbox
  3. Navigasi dengan Expo Router
  4. Mengakses API Perangkat: Kamera, Lokasi & Notifikasi Push
← Kembali ke React Academy