Khóa học react-native

Button trong React Native

0 phút đọc

Button là một trong những thành phần cơ bản và quan trọng nhất trong React Native, cho phép người dùng tương tác với ứng dụng thông qua các hành động như nhấn, chạm. Button có thể được sử dụng để thực hiện các hành động như gửi biểu mẫu, điều hướng giữa các màn hình, hoặc kích hoạt các sự kiện khác. Trong bài viết này, chúng ta sẽ tìm hiểu chi tiết về cách sử dụng Button trong React Native, các thuộc tính và phương pháp tùy chỉnh, cùng với các ví dụ cụ thể.

Cú Pháp Cơ Bản

Để sử dụng Button trong React Native, bạn cần import nó từ thư viện react-native và sử dụng nó như một thành phần trong ứng dụng của bạn.

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

const App = () => {
  return (
    <View style={styles.container}>
      <Button title="Press me" onPress={() => Alert.alert("Button pressed!")} />
    </View>
  );
};

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

export default App;

Các Thuộc Tính Quan Trọng của Button

title

Thuộc tính title xác định văn bản hiển thị trên nút.

Ví dụ:

<Button title="Click me" onPress={() => {}} />

onPress

Thuộc tính onPress là một hàm callback được gọi khi người dùng nhấn nút.

Ví dụ:

<Button title="Click me" onPress={() => console.log("Button pressed")} />

color

Thuộc tính color xác định màu nền của nút.

Ví dụ:

<Button title="Click me" onPress={() => {}} color="blue" />

disabled

Thuộc tính disabled xác định liệu nút có bị vô hiệu hóa hay không.

Ví dụ:

<Button title="Click me" onPress={() => {}} disabled={true} />

Ví Dụ Chi Tiết về Button

Ví Dụ 1: Tạo Button Cơ Bản

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

const BasicButton = () => {
  return (
    <View style={styles.container}>
      <Button title="Press me" onPress={() => Alert.alert("Button pressed!")} />
    </View>
  );
};

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

export default BasicButton;

Hình ảnh minh họa:

Basic Button

Ví Dụ 2: Tạo Button với Màu Nền Tùy Chỉnh

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

const ColoredButton = () => {
  return (
    <View style={styles.container}>
      <Button
        title="Press me"
        onPress={() => Alert.alert("Button pressed!")}
        color="green"
      />
    </View>
  );
};

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

export default ColoredButton;

Hình ảnh minh họa:

Colored Button

Ví Dụ 3: Tạo Button Bị Vô Hiệu Hóa

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

const DisabledButton = () => {
  return (
    <View style={styles.container}>
      <Button title="Press me" onPress={() => {}} disabled={true} />
    </View>
  );
};

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

export default DisabledButton;

Hình ảnh minh họa:

Disabled Button

Tùy Chỉnh Button với TouchableOpacity và TouchableHighlight

Mặc dù Button component trong React Native rất tiện lợi, nhưng nó có một số hạn chế về tùy chỉnh giao diện. Để tạo các nút tùy chỉnh hơn, bạn có thể sử dụng các thành phần như TouchableOpacityTouchableHighlight.

Sử Dụng TouchableOpacity

TouchableOpacity là một thành phần cho phép bạn tạo các nút với hiệu ứng mờ dần khi nhấn.

Ví dụ:

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

const CustomButton = () => {
  return (
    <View style={styles.container}>
      <TouchableOpacity
        style={styles.button}
        onPress={() => Alert.alert("Button pressed!")}
      >
        <Text style={styles.buttonText}>Press me</Text>
      </TouchableOpacity>
    </View>
  );
};

const styles = StyleSheet.create({
  container: {
    flex: 1,
    justifyContent: "center",
    alignItems: "center",
  },
  button: {
    backgroundColor: "blue",
    padding: 10,
    borderRadius: 5,
  },
  buttonText: {
    color: "white",
    fontSize: 16,
  },
});

export default CustomButton;

Hình ảnh minh họa:

Custom Button with TouchableOpacity

Sử Dụng TouchableHighlight

TouchableHighlight là một thành phần cho phép bạn tạo các nút với hiệu ứng làm sáng khi nhấn.

Ví dụ:

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

const HighlightButton = () => {
  return (
    <View style={styles.container}>
      <TouchableHighlight
        style={styles.button}
        onPress={() => Alert.alert("Button pressed!")}
        underlayColor="darkblue"
      >
        <Text style={styles.buttonText}>Press me</Text>
      </TouchableHighlight>
    </View>
  );
};

const styles = StyleSheet.create({
  container: {
    flex: 1,
    justifyContent: "center",
    alignItems: "center",
  },
  button: {
    backgroundColor: "blue",
    padding: 10,
    borderRadius: 5,
  },
  buttonText: {
    color: "white",
    fontSize: 16,
  },
});

export default HighlightButton;

Hình ảnh minh họa:

Custom Button with TouchableHighlight

Tạo Button với Icon

Để tạo các nút có biểu tượng, bạn có thể sử dụng thư viện react-native-vector-icons.

Cài Đặt Thư Viện

npm install react-native-vector-icons

Sử Dụng Icon trong Button

Ví dụ:

import React from "react";
import { TouchableOpacity, Text, View, StyleSheet, Alert } from "react-native";
import Icon from "react-native-vector-icons/FontAwesome";

const IconButton = () => {
  return (
    <View style={styles.container}>
      <TouchableOpacity
        style={styles.button}
        onPress={() => Alert.alert("Button pressed!")}
      >
        <Icon name="rocket" size={20} color="white" />
        <Text style={styles.buttonText}>Press me</Text>
      </TouchableOpacity>
    </View>
  );
};

const styles = StyleSheet.create({
  container: {
    flex: 1,
    justifyContent: "center",
    alignItems: "center",
  },
  button: {
    flexDirection: "row",
    alignItems: "center",
    backgroundColor: "blue",
    padding: 10,
    borderRadius: 5,
  },
  buttonText: {
    color: "white",
    fontSize: 16,
    marginLeft: 10,
  },
});

export default IconButton;

Hình ảnh minh họa:

Icon Button

Tạo Button với Gradient Background

Để tạo các nút có nền gradient, bạn có thể sử dụng thư viện react-native-linear-gradient.

Cài Đặt Thư Viện

npm install react-native-linear-gradient

Sử Dụng LinearGradient trong Button

Ví dụ:

import React from "react";
import { TouchableOpacity, Text, View, StyleSheet, Alert } from "react-native";
import LinearGradient from "react-native-linear-gradient";

const GradientButton = () => {
  return (
    <View style={styles.container}>
      <TouchableOpacity onPress={() => Alert.alert("Button pressed!")}>
        <LinearGradient
          colors={["#4c669f", "#3b5998", "#192f6a"]}
          style={styles.button}
        >
          <Text style={styles.buttonText}>Press me</Text>
        </LinearGradient>
      </TouchableOpacity>
    </View>
  );
};

const styles = StyleSheet.create({
  container: {
    flex: 1,
    justifyContent: "center",
    alignItems: "center",
  },
  button: {
    padding: 10,
    borderRadius: 5,
  },
  buttonText: {
    color: "white",
    fontSize: 16,
  },
});

export default GradientButton;

Hình ảnh minh họa:

Gradient Button

Các Kỹ Thuật Tối Ưu Hóa Sử Dụng Button

Sử Dụng StyleSheet để Tối Ưu Hóa Hiệu Suất

Sử dụng StyleSheet.create để định nghĩa các style giúp tối ưu hóa hiệu suất vì các style được tạo ra chỉ một lần và được tham chiếu lại nhiều lần.

Ví dụ:

const styles = StyleSheet.create({
  container: {
    flex: 1,
    justifyContent: "center",
    alignItems: "center",
  },
  button: {
    backgroundColor: "blue",
    padding: 10,
    borderRadius: 5,
  },
  buttonText: {
    color: "white",
    fontSize: 16,
  },
});

Sử Dụng Inline Styles cho Các Thành Phần Đơn Giản

Đối với các thành phần đơn giản hoặc khi bạn cần thay đổi style động, bạn có thể sử dụng inline styles.

Ví dụ:

<TouchableOpacity
  style={{ backgroundColor: "blue", padding: 10, borderRadius: 5 }}
/>

Các Hạn Chế của Button Component

Mặc dù Button component trong React Native rất tiện lợi, nhưng nó cũng có một số hạn chế:

  1. Tùy Chỉnh Giao Diện: Button component không hỗ trợ nhiều tùy chỉnh giao diện như thay đổi font chữ, thêm biểu tượng, hoặc tạo nền gradient.
  2. Hiệu Suất: Khi sử dụng quá nhiều Button lồng nhau, hiệu suất của ứng dụng có thể bị ảnh hưởng.
  3. Khả Năng Tái Sử Dụng: Việc sử dụng inline styles có thể làm giảm khả năng tái sử dụng các thành phần.

Kết Luận

Button là một thành phần cơ bản và quan trọng trong React Native, giúp bạn tạo ra các giao diện người dùng mượt mà và hiệu quả. Bằng cách hiểu rõ các thuộc tính và cách sử dụng Button, bạn có thể tạo ra các giao diện người dùng mượt mà và hiệu quả. Hy vọng qua bài viết này, bạn đã có thể nắm bắt được cách sử dụng Button 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