Sau phần 1 của series này, chắc hẵn các bạn đã nóng lòng muốn bắt tay ngay vào code rồi đúng không 😁. Okie, trong phần thứ 2 của series này, chúng ta sẽ cùng nhau tạo phần Story của trang Home dành cho khách trên trang Netflix nhé (Trang lúc ta vào mà chưa login ấy 😁). Nào! bắt đâu thôi!
I. Tạo file data tĩnh.
Tạo file data tĩnh là sao? Những data tĩnh là những data như hình bên dưới, chúng ta sẽ không lưu trực tiếp trên file .js
hay .jsx
mà chúng ta lưu chúng dưới dạng JSON và load lên thôi.
Trong project của chúng ta, các bạn tạo thư mục fixtures, trong đó ta sẽ tạo 2 file data khác nhau, faqs.json
cho phần FAQs và stories.json
cho các Story của trang, như hình bên dưới.
Trong các file đã tạo ở trên, các bạn thêm data cho nó như sau:
faqs.json
stories.json
Note: để có được id như mình thì các bạn lên trang Online GUID / UUID Generator tại đây để có thể lấy các id tự generate ra nhé.
Tiếp theo các bạn tạo thư mục images/misc để chứa hình ảnh cho phần Story Guest Home Page của chúng ta. Hình ảnh các bạn có thể download tại đây.
Bạn cũng có thể đặt tên thư mục tùy ý nhưng phải đảm bảo là sau đó bạn phải edit lại phần data JSON của file stories.json
cho đúng path để ảnh có thể load được nhé 😉.
II. Tạo component Story.
Component Story là sao? Thì component Story là những component nó view những content như hình bên dưới.
Đầu tiên ta cần tạo folder components, trong folder components ta tạo folder và file như sau:
Note:
- story.jsx: file chứa các child component được define để build nên component story.
- index.jsx: nó là một compound component, nó dùng để chứa các component được định nghĩa ở file
story.jsx
và sử dụng nó để build nên component story đồng thời quản lý cácstate
hoặcprops
được truyền vào.
Khái quát một chút về compound component:
Compound components là 1 design pattern trong React, nó là loại component có thể quản lí internal state
của nó và component đó được render như thế nào thì đều nằm ở phía implementation chứ không phải ở declaration .
Okie quay trở lại, trong folder src ta tạo file global-styles.jsx
để css global cho cả trang của chúng ta, ta thêm code vào như bên dưới.
Sau đó sử dụng component này ở trong /src/index.js
như bên dưới:
Trong file story.jsx
ta define các child component như sau:
Tiếp theo đến với file /story/index.jsx
, vì nó là một compound component, nên tại đây ta có thể quản lý và sử dụng các props được binding vào như sau:
Note:
- children: prop chứa các content của component,
- direction: prop này dùng để nhận các value css của component để sử dụng trong thằng
<Inner />
của filestory.jsx
, - restProps: là một rest parameter.
Okie! define như vậy là đủ rồi hehe 😁, Vậy sử dụng nó như thế nào? Thì để sử dụng những thứ mà chúng ta define nảy giờ như sau:
- Trong file
App.js
Đấy cũng đơn giản phết nhỉ 😁, các component về sau chúng ta cũng tạo theo cách này nhé 😉, run thử xem chạy như thế nào nhé.
Okie! work tốt nhá hehe 😎.
III. Tổng kết.
Okie! Phần thứ 2 của series này tới đây thôi, cơ bản chúng ta cũng làm được 50% Guest Home Page rồi. Đồng thời với ngần này thì đã đủ cho các bạn làm quen và code được theo style của styled-component rồi. Trong phần tiếp theo chúng ta sẽ làm phần FAQs của Guest Home Page này và install thêm các tool như ESLint và Prettier để có thể check convention của chúng ta khi coding giúp code của chúng ta gọn gàng, đẹp và bớt "gà" hơn nhé 😁.
TỪ QUỐC HƯNG
Đam mêm lập trình Frontend, Yêu thích việc setup workspace theo phong cách tối giản
follow me :
Bài viết liên quan
NodeJS là gì? Tại sao NodeJS lại phổ biến
Jul 09, 2024 • 8 min read
Event Loop là gì? Cơ chế hoạt động của Event Loop trong JavaScript
Jun 18, 2024 • 7 min read
So sánh Golang và NodeJS chi tiết
Oct 14, 2023 • 22 min read
Home Feed UI Instagram with TailwindCSS: Giới thiệu về series
Nov 28, 2022 • 2 min read
ReactJS Tutorial for Beginners Phần 2
Dec 12, 2021 • 3 min read
ReactJS vs React Native - Gà cùng một mẹ liệu có giống nhau?
Dec 12, 2021 • 14 min read