NamDev
Guest
Bây giờ chúng ta đã sẵn sàng để viết ứng dụng. Hãy bắt đầu với một số thành phần UI trước khi chúng ta quay trở lại và cài đặt thành phần chính.
Thành phần Header
Header được sử dụng để hiển thị tiêu đề của ứng dụng. Tạo một thư mục components. Bên trong nó, tạo một tập tin Header.js và thêm các code sau:
Đây chỉ là một thành phần React Native cơ bản, với một số style để phù hợp với giao diện người dùng của ứng dụng.
Hợp phần Score
Tiếp theo là thành phần để hiển thị số điểm (components/Score.js):
Một lần nữa, chỉ là một thành phần hiển thị đơn giản với một cái text view và một số style cơ bản.
Thành phần Card
Thành phần card (components/Card.js) sẽ hiển thị các thẻ. Các thẻ này sử dụng các biểu tượng từ bộ biểu tượng vector của Expo. Đây là một trong những tính năng có sẵn khi bạn sử dụng Expo: nó bao gồm các biểu tượng từ các bộ biểu tượng như FontAwesome, Entypo và Ionicons.
Trong đoạn code ở dưới đây, bạn có thể thấy rằng chúng ta chỉ sử dụng FontAwesome. Nó có biểu tượng mà chúng ta muốn hiển thị trạng thái mặc định của thẻ: một dấu chấm hỏi. Như bạn sẽ thấy trong phần chính của ứng dụng, chúng ta cũng sẽ sử dụng các biểu tượng từ Entypo và Ionicons. Tham chiếu đến nguồn các biểu tượng này sẽ được chuyển tới thành phần này, do đó, không cần chỉ định chúng ở đây:
Bên trong phương thức render(), chúng ta chỉ sử dụng nguồn và biểu tượng được truyền dưới dạng props nếu thẻ được mở ra. Mặc định, nó sẽ chỉ hiển thị biểu tượng dấu chấm hỏi từ FontAwesome. Nhưng nếu thẻ mở ra, nó sẽ sử dụng nguồn biểu tượng, biểu tượng, và màu sắc đã được truyền dưới dạng props.
Mỗi thẻ có thể được chạm vào. Khi chạm, hàm clickCard() sẽ được chạy, nó cũng được truyền thông qua props. Sau này bạn sẽ thấy những gì hàm thực hiện, nhưng bây giờ, chỉ cần biết rằng nó cập nhật trạng thái để hiện ra biểu tượng trên thẻ:
Thành phần Header
Header được sử dụng để hiển thị tiêu đề của ứng dụng. Tạo một thư mục components. Bên trong nó, tạo một tập tin Header.js và thêm các code sau:
Đây chỉ là một thành phần React Native cơ bản, với một số style để phù hợp với giao diện người dùng của ứng dụng.
Hợp phần Score
Tiếp theo là thành phần để hiển thị số điểm (components/Score.js):
Một lần nữa, chỉ là một thành phần hiển thị đơn giản với một cái text view và một số style cơ bản.
Thành phần Card
Thành phần card (components/Card.js) sẽ hiển thị các thẻ. Các thẻ này sử dụng các biểu tượng từ bộ biểu tượng vector của Expo. Đây là một trong những tính năng có sẵn khi bạn sử dụng Expo: nó bao gồm các biểu tượng từ các bộ biểu tượng như FontAwesome, Entypo và Ionicons.
Trong đoạn code ở dưới đây, bạn có thể thấy rằng chúng ta chỉ sử dụng FontAwesome. Nó có biểu tượng mà chúng ta muốn hiển thị trạng thái mặc định của thẻ: một dấu chấm hỏi. Như bạn sẽ thấy trong phần chính của ứng dụng, chúng ta cũng sẽ sử dụng các biểu tượng từ Entypo và Ionicons. Tham chiếu đến nguồn các biểu tượng này sẽ được chuyển tới thành phần này, do đó, không cần chỉ định chúng ở đây:
Bên trong phương thức render(), chúng ta chỉ sử dụng nguồn và biểu tượng được truyền dưới dạng props nếu thẻ được mở ra. Mặc định, nó sẽ chỉ hiển thị biểu tượng dấu chấm hỏi từ FontAwesome. Nhưng nếu thẻ mở ra, nó sẽ sử dụng nguồn biểu tượng, biểu tượng, và màu sắc đã được truyền dưới dạng props.
Mỗi thẻ có thể được chạm vào. Khi chạm, hàm clickCard() sẽ được chạy, nó cũng được truyền thông qua props. Sau này bạn sẽ thấy những gì hàm thực hiện, nhưng bây giờ, chỉ cần biết rằng nó cập nhật trạng thái để hiện ra biểu tượng trên thẻ: