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!
Mục Lục
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ác state hoặc props đượ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 file story.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é 😁.