06/04/2021, 14:50

Các thành phần trong React Native cơ bản nhất - React Native căn bản

Trong bài viết này sẽ làm quen với các thành phần trong React Native. React Native được phát triển dựa trên React - một thư viện mã nguồn mở để xây dựng giao diện người dùng với JavaScript. Để làm quen với React Native thì chúng ta sẽ phải hiểu một vài khái niệm của React như components, JSX, ...

Trong bài viết này sẽ làm quen với các thành phần trong React Native. React Native được phát triển dựa trên React - một thư viện mã nguồn mở để xây dựng giao diện người dùng với JavaScript.

Để làm quen với React Native thì chúng ta sẽ phải hiểu một vài khái niệm của React như components, JSX, props, state. Vì được xây dựng dựa trên React nên các cú pháp cũng như chức năng của ReactJS và React Native đều gần giống nhau, hãy tham khảo thêm bài viết về ReactJS căn bản để tìm hiểu sâu hơn các phần mà bài viết đề cập bên dưới.

1. React Components

React Components là một thành phần quan trọng nhất trong React, nó giúp phân chia các thành phần giao diện (UI) ra các thành phần nhỏ hơn.Trong một trang bao gồm nhiều các components khác nhau. Một React Component là thành phần nhận vào một props và trả về JSX dùng để hiện thị giao diện người dùng.

Trong React có 2 loại components đó là functional componentclass component, mỗi loại đều được sử dụng tùy vào mục đích của nó. Ở đây chúng ta có 1 component có tên Name, được viết theo 2 loại.

Loại 1: Functional components

import React from 'react';
import { Text } from 'react-native'
;
export default function Name() {
  return (
    <Text>Hello, My name is Tri</Text>
  );
}

Loại 2: Class Components

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

export default class Cat extends Component {
  render() {
    return (
<Text>Hello, My name is Tri</Text>
    );
  }
}

Trước khi khai báo một components chúng ta cần phải import React

import React from 'react';

Khi muốn viết một class components thì bắt buộc phải kế thừa React.Component thay vì một function:

class Name extends React.Component {}

Một class components bắt buộc phải có hàm render(). Bất cứ thứ gì được trả lại bên trong nó đều được hiển thị dưới dạng JSX.

class Name extends Component {
  render() {
    return <Text>Hello, My name is Tri</Text>;
  }
}

và cuối cùng chúng ta cần phải export components.

export default Name;

có rất nhiều cách để import và export một component, ở đây chúng ta sẽ ôn lại một vài kiến thức về Javascript Module.

javasript module cheatsheet png

2. JSX

React và React Native đều sử dụng JSX, một cú pháp cho phép viết các phần tử bên trong các đoạn mã Javascript, ví dụ như <Text>Xin chào Việt Nam</Text>. Bởi vì JSX là Javascript nên có thể sử dụng các biến ngay bên trong nó.

Giả sử ở đây có một biến name có giá trị là Chó và khi muốn sử dụng biến đó trong JSX chỉ cần bọc nó bằng dấu ngoặc {} như này:

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

export default function Name() {
  const name = "Chó";
  return (
    <Text>Hello, I am {name}!</Text>
  );
}

//Kết quả: Hello, I am Chó

Không chỉ các biến mà bất cứ kiểu thức nào trong Javascript cũng có thể được sử dụng trong JSX, giả sử ở đây chúng ta sẽ gọi một hàm bên trong JSX.

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

export default function Name() {
  function getFullName(firstName, lastName) {
    return firstName + " " + lastName;
  }

  return (
    <Text>
      Hello, I am {getFullName("Nguyen", "Tri")}!
    </Text>
  );
}

Bởi vì JSX được xây dựng bên trong thư viện React nên đừng quên import React from 'react' ở đầu file khi sử dụng nó.

3. Props

Props là một object được truyền vào trong một components, mỗi components sẽ nhận vào props và trả về react element. Props cho phép chúng ta giao tiếp giữa các components với nhau bằng cách truyền tham số qua lại giữa các components. Cách truyền một props cũng giống như cách mà bạn thêm một attributes cho một element HTML.

const App = () => <Cat name="Maru"></Cat>

Ở đây chúng ta có một ví dụ, truyền vào mỗi <Cat> một name khác nhau bằng props.

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

function Cat(props) {
  return (
    <View>
      <Text>Hello, I am {props.name}!</Text>
    </View>
  );
}

export default function Cafe() {
  return (
    <View>
      <Cat name="Maru" />
      <Cat name="Jellylorum" />
      <Cat name="Spot" />
    </View>
  );
}

Kết quả sẽ như sau:

Hello, I am Maru!
Hello, I am Jellylorum!
Hello, I am Spot!

Hầu hết các React Native's Core Components (các components được xây dựng sẵn React Native) cũng có thể tùy chỉnh các props. Ví dụ, khi sử dụng Image thì phải truyền cho nó 1 props có tên source để xác định ảnh nào sẽ được hiển thị.

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

export default function Web() {
  return (
    <View>
      <Image
        source={{uri: "https://Zaidap.com.net/public/logo/logo.png"}}
        style={{width: 200, height: 200}}
      />
      <Text>Hello, this is Zaidap.com's logo</Text>
    </View>
  );
}

Ngoài props source thì Image có nhiều các props khác nhau, bao gồm cả style - cho phép định dạng lại các các components. Chúng ta có thể xây dựng nhiều thứ với các core componets như Text, Image, View nhưng để xây dựng một components hoàn chỉnh và tương tác thì cần phải dùng tới state.

4. State

State là một object có thể được sử dụng để chứa dữ liệu hoặc thông tin về components, có thể được thay đổi bất cứ khi nào mong muốn.

Khác với props bạn có thể truyền props sang các components khác nhau thì state chỉ tồn tại trong phạm vi của components chứa nó, mỗi khi state thay đổi thì components đó sẽ được render lại. Nó được dùng để xử lý dữ liệu thay đổi theo thời gian hoặc trả lời tương tác từ người dùng.

Giả sử, nhà chúng ta có nuôi một con mèo và trạng thái của nó là đang rất đói, khi chúng ta cho con mèo ăn xong thì nó sẽ cập nhật lại trạng thái thành no. Lúc này trạng thái của con mèo sẽ là state, viết bằng React Native sẽ như thế này :

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

function Cat(props) {
  const [isHungry, setIsHungry] = useState(true);

  return (
    <View>
      <Text>
        Mèo con đang rất {isHungry ? "đói" : "no"}!
      </Text>
      <Button
        onPress={() => {
          setIsHungry(false);
        }}
        disabled={!isHungry}
        title={isHungry ? "Cho ăn cá " : "Cảm ơn !"}
      />
    </View>
  );
}

Để hiểu rõ hơn về cú pháp cũng như các kiến thức được sử dụng trong đoạn mã trên chúng ta cần phải tham khảo các bài viết về React trước tiên, nếu đã có kiến thức về React.js thì khi qua React Native khá dễ hiểu.

Trên đây là những thành phần cơ bản trong React Native, đây là những phần rất quan trọng trong quá trình học tập với React Native sau này. Mong rằng bài viết sẽ hữu ích cho bạn trong quá trình học React Native.

0