Nhập thành phần phản ứng scss

Đối với phiên bản cập nhật nhất của bài viết này. https. // esausilva. com/2020/07/23/how-to-use-sass-and-css-modules-with-create-react-app-cra/

Cho đến khi phát hành ứng dụng tạo phản ứng v2, nếu bạn muốn đưa các Mô-đun Sass hoặc CSS vào dự án của mình, bạn sẽ phải loại bỏ ứng dụng tạo phản ứng, tìm hiểu cấu hình Webpack, cài đặt trình tải Sass và tự định cấu hình nó

Ảnh của Vernon Raineil Cenzon trên Bapt

không còn nữa. Nhóm tại Facebook đã phát hành ứng dụng tạo phản ứng v2 và trong số nhiều cải tiến, họ đã cho chúng tôi khả năng sử dụng Mô-đun Sass và CSS ngay lập tức và trong hướng dẫn này, bạn sẽ tìm hiểu cách đơn giản để đưa chúng vào

Hãy tạo một dự án đơn giản để chứng minh điều này

Mẹo. Sử dụng Bit để xây dựng nhanh hơn với các thành phần. Nó giúp nhóm của bạn chia sẻ và tái sử dụng các thành phần, đồng thời sử dụng chúng để xây dựng các ứng dụng mới. Hãy thử một lần

Hợp tác và khám phá thành phần · Bit

Bit là nơi các nhà phát triển chia sẻ các thành phần và hợp tác để cùng nhau xây dựng phần mềm tuyệt vời. Khám phá các thành phần được chia sẻ…

chút. nhà phát triển

Phản ứng spinners với Bit. Chọn, Chơi, Cài đặt

Bắt Sassy với Sass

Đầu tiên tạo một dự án mới với

yarn add node-sass
6 mới nhất. Tôi sẽ gọi cho tôi là
yarn add node-sass
7

npx create-react-app cra-sass

Qua một bên. Nếu bạn không chắc chắn về

yarn add node-sass
8 là gì hoặc nó làm gì, thì về cơ bản, nó sử dụng các gói mới nhất từ ​​sổ đăng ký npm, vì vậy bạn không cần phải cài đặt cục bộ
yarn add node-sass
6

Bạn sẽ cần một phụ thuộc mới để hỗ trợ Sass. Cài đặt

yarn start
0 (bên trong dự án
yarn add node-sass
7)

yarn add node-sass

Bây giờ đổi tên

yarn start
2 thành
yarn start
3

Khi đã xong, hãy mở

yarn start
4 và ở dòng 3, bạn sẽ tìm thấy
yarn start
5. Thay đổi nó thành
yarn start
6

Tại thời điểm này, bạn có thể chạy ứng dụng

yarn start

Bạn sẽ thấy mẫu mặc định được tạo bởi ứng dụng tạo phản ứng trông rất đẹp

Mẫu mặc định của CRA

Hãy tạo một tệp Sass khác và đặt tên là

yarn start
7 trong thư mục
yarn start
8

Mở tệp Sass mới tạo này và sao chép phần sau

$primary-color: #282c34;
$secondary-color: #61dafb;

Bây giờ hãy mở

yarn start
9 và sửa đổi nó như sau (các cập nhật được in đậm)

@import './variables.scss';.App {
text-align: center;
}
.App-logo {
animation: App-logo-spin infinite 20s linear;
height: 40vmin;
}
.App-header {
background-color: $primary-color;
min-height: 100vh;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
font-size: calc(10px + 2vmin);
color: white;
}
.App-link {
color: $secondary-color;
}
@keyframes App-logo-spin {
from {
transform: rotate(0deg);
}
to {
transform: rotate(360deg);
}
}

Như bạn có thể thấy, chúng tôi đang nhập

yarn start
7 và các biến mà chúng tôi đã tạo cho màu nền và màu liên kết

Nếu bạn đã dừng ứng dụng, hãy tiếp tục và chạy lại ứng dụng đó (

$primary-color: #282c34;
$secondary-color: #61dafb;
1). Nếu bạn không dừng ứng dụng, hãy truy cập trình duyệt của bạn và bạn sẽ thấy ứng dụng vẫn giống như trước đây. Đó là bởi vì chúng tôi chỉ trích xuất các màu thành một tệp riêng 😄

Với ý nghĩ đó, giờ đây bạn có toàn bộ sức mạnh của Sass trong ứng dụng tạo-phản ứng mà không cần phải loại bỏ và mất hỗ trợ cho bất kỳ bản cập nhật nào trong tương lai cho dự án

Nhưng chờ đợi, có nhiều hơn nữa. Khi bạn xây dựng ứng dụng, ứng dụng tạo phản ứng sẽ sử dụng PostCSS với plugin Autoprefixer để tự động thêm các tiền tố nhà cung cấp bắt buộc

Điều này hoạt động với danh sách trình duyệt trong

$primary-color: #282c34;
$secondary-color: #61dafb;
2 của bạn. Theo mặc định, ứng dụng tạo phản ứng có cấu hình sau

"browserslist": [
">0.2%",
"not dead",
"not ie <= 11",
"not op_mini all"
]

Đây là những trình duyệt mà ứng dụng tạo phản ứng đang nhắm mục tiêu theo mặc định

Nếu bạn cần hỗ trợ cho các trình duyệt khác nhau (giả sử IE 10), bạn sẽ cần bao gồm trình duyệt cụ thể như sau

"browserslist": [
">0.2%",
"not dead",
"not ie <= 11",
"not op_mini all",
"ie 10"
]

Để có danh sách đầy đủ các truy vấn trình duyệt, hãy truy cập trang chính thức

Một điều cuối cùng, tiền tố CSS Grid bị tắt theo mặc định. Nếu cần, bạn có thể bật nó lên bằng cách thêm

$primary-color: #282c34;
$secondary-color: #61dafb;
3 vào đầu tệp CSS của mình. Tuy nhiên, có , vì vậy hãy làm quen với những

Mô-đun CSS

Nhóm tại Facebook đã làm cho việc sử dụng Mô-đun CSS với ứng dụng tạo-phản ứng trở nên thực sự dễ dàng. Bạn chỉ cần sử dụng quy ước đặt tên sau.

$primary-color: #282c34;
$secondary-color: #61dafb;
4 hoặc
$primary-color: #282c34;
$secondary-color: #61dafb;
5, trong đó
$primary-color: #282c34;
$secondary-color: #61dafb;
6 là tên biểu định kiểu của bạn

Trước khi tiếp tục với một ví dụ, nếu bạn không chắc chắn về các Mô-đun CSS, đây là định nghĩa chính thức từ repo

Mô-đun CSS là một tệp CSS trong đó tất cả các tên lớp và tên hoạt hình được đặt trong phạm vi cục bộ theo mặc định

Về cơ bản, các tên lớp giống nhau không xung đột khi được sử dụng trong các tệp CSS khác nhau. Giả sử bạn có

$primary-color: #282c34;
$secondary-color: #61dafb;
7 và
$primary-color: #282c34;
$secondary-color: #61dafb;
8, thì trong mỗi tệp đó, bạn có một lớp có tên là
$primary-color: #282c34;
$secondary-color: #61dafb;
9 như vậy

// Button.css
.bg-color{background:red;}
// Header.css
.bg-color{background:blue;}

Khi React chạy, các lớp thực sự sẽ được đặt tên như thế này

@import './variables.scss';.App {
text-align: center;
}
.App-logo {
animation: App-logo-spin infinite 20s linear;
height: 40vmin;
}
.App-header {
background-color: $primary-color;
min-height: 100vh;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
font-size: calc(10px + 2vmin);
color: white;
}
.App-link {
color: $secondary-color;
}
@keyframes App-logo-spin {
from {
transform: rotate(0deg);
}
to {
transform: rotate(360deg);
}
}
0 và
@import './variables.scss';.App {
text-align: center;
}
.App-logo {
animation: App-logo-spin infinite 20s linear;
height: 40vmin;
}
.App-header {
background-color: $primary-color;
min-height: 100vh;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
font-size: calc(10px + 2vmin);
color: white;
}
.App-link {
color: $secondary-color;
}
@keyframes App-logo-spin {
from {
transform: rotate(0deg);
}
to {
transform: rotate(360deg);
}
}
1. Họ tuân theo quy ước đặt tên sau.
@import './variables.scss';.App {
text-align: center;
}
.App-logo {
animation: App-logo-spin infinite 20s linear;
height: 40vmin;
}
.App-header {
background-color: $primary-color;
min-height: 100vh;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
font-size: calc(10px + 2vmin);
color: white;
}
.App-link {
color: $secondary-color;
}
@keyframes App-logo-spin {
from {
transform: rotate(0deg);
}
to {
transform: rotate(360deg);
}
}
2

Tiếp tục với ví dụ Sass, mở

yarn start
9 và thêm vào như sau

.btn {
width: 200px;
height: 50px;
font-size: 20px;
border-radius: 5px;
margin-top: 20px;
background: rgb(199, 196, 23);
border: none;
&:hover {
background: rgb(236, 233, 36);
}
}

Bây giờ hãy mở

@import './variables.scss';.App {
text-align: center;
}
.App-logo {
animation: App-logo-spin infinite 20s linear;
height: 40vmin;
}
.App-header {
background-color: $primary-color;
min-height: 100vh;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
font-size: calc(10px + 2vmin);
color: white;
}
.App-link {
color: $secondary-color;
}
@keyframes App-logo-spin {
from {
transform: rotate(0deg);
}
to {
transform: rotate(360deg);
}
}
4 và mã được in đậm

import React, { Component } from 'react';
import logo from './logo.svg';
import './App.scss';
import Button from './Button';
class App extends Component {
render() {
return (


logo


Edit src/App.js and save to reload.


className="App-link"
href="https://reactjs.org"
target="_blank"
rel="noopener noreferrer"
>
Learn React




);
}
}
export default App;

Về cơ bản, chúng tôi đang tạo một nút và gán một lớp

@import './variables.scss';.App {
text-align: center;
}
.App-logo {
animation: App-logo-spin infinite 20s linear;
height: 40vmin;
}
.App-header {
background-color: $primary-color;
min-height: 100vh;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
font-size: calc(10px + 2vmin);
color: white;
}
.App-link {
color: $secondary-color;
}
@keyframes App-logo-spin {
from {
transform: rotate(0deg);
}
to {
transform: rotate(360deg);
}
}
5 cho nó. Chúng tôi cũng tạo một thành phần
@import './variables.scss';.App {
text-align: center;
}
.App-logo {
animation: App-logo-spin infinite 20s linear;
height: 40vmin;
}
.App-header {
background-color: $primary-color;
min-height: 100vh;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
font-size: calc(10px + 2vmin);
color: white;
}
.App-link {
color: $secondary-color;
}
@keyframes App-logo-spin {
from {
transform: rotate(0deg);
}
to {
transform: rotate(360deg);
}
}
6

Bây giờ, hãy thực sự tạo thành phần Nút và tệp biểu định kiểu liên quan trong thư mục

yarn start
8

yarn add node-sass
0

Lưu ý rằng tôi đang tạo một Mô-đun CSS ở đây 😉

Mở

@import './variables.scss';.App {
text-align: center;
}
.App-logo {
animation: App-logo-spin infinite 20s linear;
height: 40vmin;
}
.App-header {
background-color: $primary-color;
min-height: 100vh;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
font-size: calc(10px + 2vmin);
color: white;
}
.App-link {
color: $secondary-color;
}
@keyframes App-logo-spin {
from {
transform: rotate(0deg);
}
to {
transform: rotate(360deg);
}
}
8 và thêm vào như sau

yarn add node-sass
1

Để chứng minh, tôi đang sử dụng cùng tên lớp (

@import './variables.scss';.App {
text-align: center;
}
.App-logo {
animation: App-logo-spin infinite 20s linear;
height: 40vmin;
}
.App-header {
background-color: $primary-color;
min-height: 100vh;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
font-size: calc(10px + 2vmin);
color: white;
}
.App-link {
color: $secondary-color;
}
@keyframes App-logo-spin {
from {
transform: rotate(0deg);
}
to {
transform: rotate(360deg);
}
}
5) như trong
yarn start
9

Bây giờ hãy mở

"browserslist": [
">0.2%",
"not dead",
"not ie <= 11",
"not op_mini all"
]
1 và thêm vào như sau

yarn add node-sass
2

In đậm, bạn sẽ thấy cách chúng tôi có thể nhập biểu định kiểu để sử dụng Mô-đun CSS

Bạn có thể sử dụng hàm hủy (như tôi hiện đang làm) hoặc ký hiệu dấu chấm như vậy

yarn add node-sass
3

Đã đến lúc chạy ứng dụng

yarn start

Mô-đun CSS

Lưu ý hai lớp không xung đột. Cái được tạo trên toàn cầu vào

yarn start
9 giữ nguyên là
@import './variables.scss';.App {
text-align: center;
}
.App-logo {
animation: App-logo-spin infinite 20s linear;
height: 40vmin;
}
.App-header {
background-color: $primary-color;
min-height: 100vh;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
font-size: calc(10px + 2vmin);
color: white;
}
.App-link {
color: $secondary-color;
}
@keyframes App-logo-spin {
from {
transform: rotate(0deg);
}
to {
transform: rotate(360deg);
}
}
5 và cái được tạo bằng Mô-đun CSS hiện là
"browserslist": [
">0.2%",
"not dead",
"not ie <= 11",
"not op_mini all"
]
4

Cuối cùng, hãy xây dựng ứng dụng

yarn add node-sass
5

Mở biểu định kiểu được tạo bên dưới

"browserslist": [
">0.2%",
"not dead",
"not ie <= 11",
"not op_mini all"
]
5 và bạn sẽ nhận thấy cả hai lớp đều có mặt, nhưng chúng không xung đột vì chúng được đặt tên khác nhau

biểu định kiểu đã tạo

Phần kết luận

Tôi hy vọng bạn thích bài viết này và cảm ơn bạn đã đọc. Nếu bạn có bất kỳ câu hỏi, đề xuất hoặc chỉnh sửa nào, hãy cho tôi biết trong phần bình luận bên dưới. Đừng quên chia sẻ bài viết này và bạn có thể theo dõi tôi trên Twitter

Tôi có thể nhập SCSS trong React không?

Giống như các bộ xử lý CSS khác, Sass không được React hỗ trợ . Để sử dụng Sass trong React, bạn cần cài đặt phần phụ thuộc của bên thứ ba thông qua trình quản lý gói như yarn hoặc npm. Bạn có thể kiểm tra xem npm hoặc yarn đã được cài đặt trên máy cục bộ của mình hay chưa bằng cách chạy npm --version hoặc yarn --version.

Tôi có thể sử dụng SCSS với các thành phần được tạo kiểu không?

Trong SCSS, bạn có thể sử dụng các biến và công thức để thể hiện các biến thể về màu sắc, cỡ chữ, độ rộng và khoảng cách. Tuy nhiên, khi bạn chuyển từ SCSS sang các thành phần được tạo kiểu, cú pháp không còn hiệu lực nữa . Các tệp thành phần được tạo kiểu là CSS-in-JS, vì vậy chúng thực sự là các tệp JavaScript.

Làm cách nào để nhập tệp SCSS trong HTML?

Cách tiếp cận. .
Đầu tiên, tạo một tệp HTML không có thuộc tính CSS
Trong bước tiếp theo, hãy tạo một tệp với. phần mở rộng scss
Ở bước cuối cùng, bạn cần nhập tệp CSS vào tệp SCSS bằng từ khóa nhập