Khóa học react-native

Styling trong React Native

0 phút đọc

Styling là một phần quan trọng trong việc phát triển ứng dụng di động với React Native. Nó không chỉ giúp tạo ra giao diện người dùng hấp dẫn mà còn cải thiện trải nghiệm người dùng. Trong bài viết này, chúng ta sẽ tìm hiểu chi tiết về các phương pháp và thực hành tốt nhất để styling trong React Native, cùng với các ví dụ cụ thể để minh họa.

Giới Thiệu về Styling trong React Native

React Native sử dụng JavaScript để định nghĩa các style cho các thành phần giao diện. Các style trong React Native tương tự như CSS nhưng được viết dưới dạng các đối tượng JavaScript với cú pháp camelCase. Có hai cách chính để áp dụng style trong React Native: sử dụng inline styles và sử dụng StyleSheet.

Inline Styles

Inline styles được định nghĩa trực tiếp trong thuộc tính style của một thành phần. Đây là cách đơn giản và nhanh chóng để áp dụng style, nhưng không phải là cách tốt nhất cho các ứng dụng phức tạp.

Ví dụ:

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

const App = () => {
  return (
    <View style={{ flex: 1, justifyContent: "center", alignItems: "center" }}>
      <Text style={{ fontSize: 20, color: "blue" }}>Hello, World!</Text>
    </View>
  );
};

export default App;

StyleSheet

StyleSheet là cách tốt hơn để quản lý style trong các ứng dụng lớn. Nó cho phép bạn định nghĩa các style trong một đối tượng riêng biệt và tái sử dụng chúng trong nhiều thành phần.

Ví dụ:

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

const App = () => {
  return (
    <View style={styles.container}>
      <Text style={styles.text}>Hello, World!</Text>
    </View>
  );
};

const styles = StyleSheet.create({
  container: {
    flex: 1,
    justifyContent: "center",
    alignItems: "center",
  },
  text: {
    fontSize: 20,
    color: "blue",
  },
});

export default App;

Các Thực Hành Tốt Nhất cho Styling trong React Native

1. Sử Dụng Component-based Styling

Adopting a component-based approach to styling in React Native promotes reusability and maintainability. Thay vì styling từng thành phần riêng lẻ, hãy tạo các thành phần style có thể tái sử dụng và áp dụng chúng cho nhiều thành phần khác nhau.

Ví dụ:

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

const Box = ({ children }) => {
  return <View style={styles.box}>{children}</View>;
};

const App = () => {
  return (
    <View style={styles.container}>
      <Box>
        <Text style={styles.text}>Box 1</Text>
      </Box>
      <Box>
        <Text style={styles.text}>Box 2</Text>
      </Box>
    </View>
  );
};

const styles = StyleSheet.create({
  container: {
    flex: 1,
    justifyContent: "center",
    alignItems: "center",
  },
  box: {
    width: 100,
    height: 100,
    backgroundColor: "lightblue",
    justifyContent: "center",
    alignItems: "center",
    margin: 10,
  },
  text: {
    fontSize: 16,
    color: "white",
  },
});

export default App;

2. Sử Dụng Named Style cho Tính Tái Sử Dụng

Thay vì sử dụng inline styles, hãy sử dụng các style được định nghĩa trong StyleSheet.create(). Điều này giúp bạn dễ dàng áp dụng cùng một style cho nhiều thành phần và đảm bảo tính nhất quán trong toàn bộ ứng dụng.

Ví dụ:

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

const App = () => {
  return (
    <View style={styles.container}>
      <Text style={styles.title}>Title</Text>
      <Text style={styles.subtitle}>Subtitle</Text>
    </View>
  );
};

const styles = StyleSheet.create({
  container: {
    flex: 1,
    justifyContent: "center",
    alignItems: "center",
  },
  title: {
    fontSize: 24,
    fontWeight: "bold",
  },
  subtitle: {
    fontSize: 18,
    color: "gray",
  },
});

export default App;

3. Tận Dụng Style Inheritance và Cascading

React Native hỗ trợ style inheritance và cascading, tương tự như CSS. Bạn có thể tạo một base style chứa các thuộc tính chung và mở rộng nó với các style cụ thể cho từng thành phần.

Ví dụ:

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

const App = () => {
  return (
    <View style={styles.container}>
      <Text style={[styles.text, styles.title]}>Title</Text>
      <Text style={[styles.text, styles.subtitle]}>Subtitle</Text>
    </View>
  );
};

const styles = StyleSheet.create({
  container: {
    flex: 1,
    justifyContent: "center",
    alignItems: "center",
  },
  text: {
    fontSize: 16,
  },
  title: {
    fontWeight: "bold",
  },
  subtitle: {
    color: "gray",
  },
});

export default App;

4. Tránh Sử Dụng Inline Styles cho Các Thành Phần Phức Tạp

Đối với các thành phần phức tạp với nhiều style, tránh sử dụng inline styles trực tiếp trong mã JSX. Thay vào đó, định nghĩa các style riêng biệt và áp dụng chúng bằng cách sử dụng named styles hoặc mở rộng base styles.

Ví dụ:

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

const App = () => {
  return (
    <View style={styles.container}>
      <View style={styles.card}>
        <Text style={styles.cardTitle}>Card Title</Text>
        <Text style={styles.cardContent}>Card Content</Text>
      </View>
    </View>
  );
};

const styles = StyleSheet.create({
  container: {
    flex: 1,
    justifyContent: "center",
    alignItems: "center",
  },
  card: {
    width: 200,
    padding: 20,
    backgroundColor: "white",
    borderRadius: 10,
    shadowColor: "#000",
    shadowOffset: { width: 0, height: 2 },
    shadowOpacity: 0.8,
    shadowRadius: 2,
    elevation: 5,
  },
  cardTitle: {
    fontSize: 18,
    fontWeight: "bold",
  },
  cardContent: {
    fontSize: 14,
    color: "gray",
  },
});

export default App;

5. Sử Dụng Các Thành Phần Layout Phù Hợp

React Native cung cấp nhiều thành phần layout như View, ScrollView, FlatList, và SectionList để cấu trúc giao diện người dùng của bạn. Chọn thành phần layout phù hợp dựa trên yêu cầu cụ thể của bạn.

Ví dụ:

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

const App = () => {
  return (
    <ScrollView contentContainerStyle={styles.container}>
      <Text style={styles.text}>Item 1</Text>
      <Text style={styles.text}>Item 2</Text>
      <Text style={styles.text}>Item 3</Text>
      <Text style={styles.text}>Item 4</Text>
      <Text style={styles.text}>Item 5</Text>
    </ScrollView>
  );
};

const styles = StyleSheet.create({
  container: {
    flexGrow: 1,
    justifyContent: "center",
    alignItems: "center",
  },
  text: {
    fontSize: 20,
    margin: 10,
  },
});

export default App;

Các Thư Viện và Công Cụ Hỗ Trợ Styling

1. Styled-Components

Styled-components là một thư viện CSS-in-JS cho phép bạn viết CSS thực sự để style các thành phần React Native của bạn.

Cài Đặt:

npm install styled-components

Sử Dụng:

import React from "react";
import styled from "styled-components/native";

const Container = styled.View`
  flex: 1;
  justify-content: center;
  align-items: center;
`;

const Title = styled.Text`
  font-size: 20px;
  color: blue;
`;

const App = () => {
  return (
    <Container>
      <Title>Hello, World!</Title>
    </Container>
  );
};

export default App;

2. NativeBase

NativeBase là một thư viện UI component cho phép bạn xây dựng các ứng dụng React Native với các thành phần giao diện người dùng có sẵn và có thể tùy chỉnh.

Cài Đặt:

npm install native-base

Sử Dụng:

import React from "react";
import { NativeBaseProvider, Box, Text } from "native-base";

const App = () => {
  return (
    <NativeBaseProvider>
      <Box flex={1} justifyContent="center" alignItems="center">
        <Text fontSize="lg">Hello, World!</Text>
      </Box>
    </NativeBaseProvider>
  );
};

export default App;

Kết Luận

Styling trong React Native là một phần quan trọng để tạo ra các ứng dụng di động hấp dẫn và dễ sử dụng. Bằng cách sử dụng các phương pháp và thực hành tốt nhất như component-based styling, named styles, style inheritance, và chọn các thành phần layout phù hợp, bạn có thể tạo ra các giao diện người dùng nhất quán và dễ bảo trì. Ngoài ra, các thư viện như styled-components và NativeBase cung cấp các công cụ mạnh mẽ để hỗ trợ việc styling trong React Native. Hy vọng qua bài viết này, bạn đã có thể nắm bắt được cách styling trong React Native và áp dụng vào các dự án của mình.

Avatar
Được viết bởi

TechMely Team

Gợi ý câu hỏi phỏng vấn

entry

React Native là gì?

entry

What is React Native?

entry

List some benefits of using React Native for building mobile apps?

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào