💻
React Native
  • 👨‍💻Full-Stack Web Developer
  • 📚Теорія
    • 1️⃣Налаштування робочого середовища
      • Вступ
      • Налаштування середовища розробки
      • Перший проект
      • Налаштування емуляції Android (Android Studio + JDK)
      • Налаштування емуляції Iphone (Xcode)
      • Запуск проекту на віртуальних пристроях
      • Expo Snack
    • 2️⃣Верстка і стилізація
      • Функціональні та класові компоненти
      • Базові компоненти
      • Фундаментальні концепції React в React Native
      • Стилізація компонентів
      • Стилізація залежно від платформи
      • Кольори
      • Зображення
      • Векторна графіка
      • Розташування компонентів
      • Робота зі шрифтами
      • Колекції даних
      • Дебаг застосунку
    • 3️⃣Обробка подій
      • Обробка подій
      • Обробка текстових інпутів
      • Інпути в фокусі
      • Форма для збору даних
      • Робота з клавіатурою
      • Перехоплення подій
    • 4️⃣Навігація
      • Підключення навігації
      • Перемикання екранів
      • Передача параметрів між екранами
      • Хедер екрану
      • Вкладена навігація
      • Нижня навігація
    • 5️⃣Нативні компоненти
      • Камера
      • Мапи
      • Геолокація
    • 👷Практика
      • 1️⃣Завдання 1
      • 2️⃣Завдання 2
      • 3️⃣Завдання 3
      • 4️⃣Завдання 4
      • 5️⃣Завдання 5
      • 6️⃣Завдання 6
      • 7️⃣Завдання 7
    • Додаткові покликання
  • Про мене
    • Про мене
Powered by GitBook
On this page
  • Модуль платформи
  • Спеціальні розширення платформи
  1. Теорія
  2. Верстка і стилізація

Стилізація залежно від платформи

PreviousСтилізація компонентівNextКольори

Last updated 1 year ago

React Native пропонує два способи впорядкувати код і розділити його стилізацію в залежності від платформами:

  • Використання

  • Використання

Модуль платформи

В React Native є модуль визначення платформи на якій запустився застосунок. Тому можна виконувати певні дії в залежності ос на якій працює програма. Цю можливість треба використовувати, коли необхідно написати специфічний для платформи код у частині компонента.

Platform.OS поверне 'ios' коли застосунок працює на iOS або 'android' коли на Android.

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

export default function App() {
  return (
    <View style={styles.container}>
      <Text style={styles.text}>Hello</Text>
    </View>
  );
}

export const styles = StyleSheet.create({
  container: {
    flex: 1,
    backgroundColor: "#fff",
    alignItems: "center",
    justifyContent: "center",
  },
  text: {
    fontSize: 35,
    backgroundColor: Platform.OS === "ios" ? "red" : "yellow",
  },
});

Також існує метод визначення платформи Platform.select. Він може мати такі значення 'ios' | 'android' | 'native' | 'default'. Відповідно, якщо запущено застосунок на iOS, Android. Якщо не визначено пристрій стиль застосується 'native'. І 'default', якщо, наприклад відкрили в браузері.

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

export default function App() {
  return (
    <View style={styles.container}>
      <Text style={styles.text}>Hello</Text>
    </View>
  );
}

const styles = StyleSheet.create({
  container: {
    flex: 1,
    backgroundColor: "#fff",
    alignItems: "center",
    justifyContent: "center",
  },
  text: {
    fontSize: 35,
    ...Platform.select({
      ios: {
        backgroundColor: "yellow",
      },
      android: {
        backgroundColor: "orange",
      },
      default: {
        // інша платформа, наприклад web
        backgroundColor: '#ff0000',
      },
    }),
  },
});

Спеціальні розширення платформи

Коли код застосунку стає складнішим, можна розділити компоненти для різних платформ з приставкою .ios. або .android. В такому разі автоматично завантажиться потрібний файл. Скажімо є два таких файли:

BigButton.ios.js
BigButton.android.js

Потім потрібно заімпортувати компонент:

import BigButton from './BigButton';

React Native автоматично підбере потрібний файл на основі запущеної платформи.

Посилання на офіційну документацію:

📚
2️⃣
Стилізація компонентів в залежності від платформи
модуля платформи
розширень файлів для певної платформи