Yêu cầu thg 11 24, 2019 12:14 CH 807 0 4
  • 807 0 4
0

Hỏi về QUẢN LÝ CSS cho project reactjs có NHIỀU PAGE

Chia sẻ
  • 807 0 4

Ở bước sơ khai là làm html css thì mỗi tệp html phải có mỗi file css riêng phải ko ạ? Nghĩa là index.html dùng index.css, tương tự thì about.html dùng about.css vân vân.

Sau đó, khi đến bước react và component hóa thì mình gặp phải 1 vấn đề là: tất cả đều import vào App.js thì nó sẽ bị đè css, nghĩa là css của about nó sẽ đè lên css của index.css

Có cách nào để quản lý chúng không bị đè nhau ạ? Mình dùng trick là trang about sẽ viết css trực tiếp chứ ko tách file, nhưng cách này làm code bị rối quá. Help ạ.

4 CÂU TRẢ LỜI


Đã trả lời thg 11 24, 2019 1:01 CH
Đã được chấp nhận
+7

Hiện tại với dự án mình làm có số lượng component tương đối lớn. Với mỗi component thì sẽ có 1 file css riêng và import vào component đấy. Tuy nhiên, cách viết css phải là theo chuẩn BEM. Ví dụ như file about.css thì các class sử dụng phải viết theo dạng .about__header, .about__container ... Nếu bạn viết như này thì đến lúc build thì sẽ không bị trùng style vì bạn có tên class cha là .about bao bọc rồi. Để dùng BEM như vậy thì bạn cũng nên tìm hiểu sass hay scss.

Bạn có thể tham khảo bài viết sau:

https://viblo.asia/p/tim-hieu-ve-bem-gioi-thieu-qzaGzNMzGyO

https://viblo.asia/p/sass-va-scss-ban-chon-gi-part-1-gAm5yR1XKdb

Chia sẻ
Avatar Tom Hagen @tomhagen
thg 11 26, 2019 1:22 SA

Cho mình hỏi cách bạn tổ chức thư mục tí ,mỗi component có 1 file css riêng, vậy file css này b sẽ đặt ở đâu:

  1. Đặt ở trong cùng thư mục với file js, ví dụ ------Folder about --------- about.js ---------- about.css

  2. Hay gom chung các file css của các component và đặt vào cùng 1 folder

Mình hay dùng cách 1, để mỗi lần xem đến component nào là thấy được luôn file css của nó, khỏi phải lục tìm file css. Không biết cách tổ chức trong project lớn như thế nào nhỉ ?

Avatar Bùi Hiếu @buihieubthc2rb
thg 11 26, 2019 1:24 SA

@tomhagen Bên mình làm theo cách 1 nhé. Đến lúc tìm lại cũng rất là thuận tiện.

Avatar Dũng @quocdungabc
thg 11 30, 2019 1:10 CH

@tomhagen : pác cho hỏi là: riêng cái index.css cho trang chủ thì mình sẽ copy vào thư mục public đúng ko? Còn những tập tin css của page khác thì sẽ đặt vào chung component?

Đã trả lời thg 11 24, 2019 2:45 CH
+1

Thật ra bạn có import bao file vào App.js thì cũng không bị ghi đè được nêu bạn không viết tên class trùng nhau. Vấn đề của bạn bây giờ là cần một quy ước đặt tên class cho không bị trùng cũng như là dễ nhớ dễ hiểu. Bạn có thể tham khảo tại đây: https://viblo.asia/p/tiet-kiem-thoi-gian-voi-quy-uoc-dat-ten-css-maGK78PMZj2

Chia sẻ
Avatar Dũng @quocdungabc
thg 11 25, 2019 9:22 SA

Thank you 😄 ❤️

thg 11 27, 2019 6:42 SA

@tuanphamle112 Bạn giỏi quá ạ, cho mình info để tiện ib ko ạ ❤️

Avatar Tuấn Phạm Lê @tuanphamle112
thg 11 27, 2019 7:37 SA

@chinn chị im đeeeee

Đã trả lời thg 11 24, 2019 12:18 CH
0

Thay vì bạn viết trực tiếp css vào file thì bạn tách file css riêng rồi import vào component. Ví dụ bạn viết css có tên file about.css thì bạn import vào component about.js luôn k import vào file app.js nữa

Chia sẻ
Avatar Dũng @quocdungabc
thg 11 24, 2019 12:33 CH

Nhưng mà lát nữa thì component about.js mình cũng phải import vào App để quản lý điều hướng các kiểu chứ ạ?

Avatar Bùi Hiếu @buihieubthc2rb
thg 11 24, 2019 1:01 CH
Đã trả lời thg 11 28, 2019 8:51 SA
0

Bạn có thể dùng Sass hoặc Scss để viết tránh việc trùng css. Hoặc sử dụng thư viện http://tailwindcss.com để viết cho nhanh nhé https://viblo.asia/p/viet-style-sach-cho-front-end-nhu-the-nao-E375zd72ZGW

Chia sẻ
Avatar Dũng @quocdungabc
thg 11 28, 2019 1:48 CH

Thanks pac 😄 ❤️

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí