Q4. Mô tả các phương pháp styling component trong React Native?

Trong React Native, các phương pháp styling component có nhiều điểm tương đồng với ReactJS, nhưng có những điểm riêng biệt phù hợp với việc phát triển ứng dụng mobile.

Inline styles

React Native cho phép bạn áp dụng styles trực tiếp vào các component thông qua thuộc tính style bằng cách sử dụng object style

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

const MyComponent = () => {
  return (
    <View style={{ padding: 10, backgroundColor: 'lightgrey' }}>
      <Text style={{ color: 'blue' }}>Hello, World!</Text>
    </View>
  );
};

export default MyComponent;

StyleSheet API

React Native cung cấp StyleSheet API để định nghĩa và quản lý các styles trong một static object, giúp cải thiện performance và tổ chức code tốt hơn

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

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

const styles = StyleSheet.create({
  container: {
    padding: 10,
    backgroundColor: 'lightgrey',
  },
  text: {
    color: 'blue',
  },
});

export default MyComponent;

Styled Components

Styled Components cũng có thể được sử dụng trong React Native. Thư viện này cho phép bạn sử dụng CSS-in-JS để tạo ra các component styled với CSS và các styles này được scoped mặc định

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

const Container = styled.View`
  padding: 10px;
  background-color: lightgrey;
`;

const StyledText = styled.Text`
  color: blue;
`;

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

export default MyComponent;

CSS-in-JS Libraries

Ngoài Styled Components, có nhiều thư viện CSS-in-JS khác như Emotion và JSS, hỗ trợ cả ReactJS và React Native

Tại sao không nên style component bằng inline CSS

  1. Performance

    Mỗi lần re-render, một object style mới được tạo. Điều này có thể làm giảm hiệu suất của app, đặc biệt là trong các application lớn hoặc khi component được render lại nhiều lần

  2. Khả năng reuse

    Inline styles không thể tái sử dụng. Nếu bạn cần apply một style cho nhiều component, bạn sẽ phải sao chép và dán các object style đó vào nhiều nơi, làm khó bảo trì

  3. Khó quản lý và duy trì

    Việc quản lý và duy trì các styles có thể trở nên khó khăn nếu các styles được phân tán khắp nơi trong component.

Khi nào nên dùng StyleSheet?

  • Cải thiện hiệu suất: StyleSheet.create giúp tạo ra một object style tĩnh, tránh việc tạo lại styles mỗi khi component re-render.

  • Quản lý styles tốt hơn: Styles được tách riêng ra khỏi logic của component, giúp code dễ đọc và dễ bảo trì hơn.

  • Dễ dàng tái sử dụng: Styles được định nghĩa một lần và có thể được sử dụng ở nhiều nơi.