리액션 - 보래 추정?
👋 머리말
Sevoc沥jáesteve em algum projeto webcom certeza játrabalhou com CSS ou algum dos seus préprocessadors(Sass, LESS, 터치펜).
다른 반응이 없다.실용적인 기술로서 우리는 간단한 구성 요소를 통해 실현할 수 있다.
와모스 평가사 o
Header
da nossa aplicaço, 그는 이것이 아주 좋은 방법이라고 말했다. 이것은 Pouco nosso arquivo를 수정할 수 있다.Precisamos criar uma passar com nome Header,assim como o arquivo Header.tsx
.E. 스파게티의 공급량은 index.tsx
개, 수량은 Header.tsx
개다.스파게티의 주성분은 styles.css
종이다.Por fim apagamos o
Header.tsx
./* components/Header/styles.css */
#header {
background: #5636d3;
}
// components/Header/index.tsx
import "./styles.css"
function Header() {
return (
<div>
<header id="header">
<span>gofinances</span>
<nav>
<a href="/">Listagem</a>
<a href="/create">Cadastro</a>
</nav>
</header>
</div>
);
}
export default Header
seu seuservidor ainda estiver rodando(동남, npm start
)는 http://localhost:3000으로 주요 업무는nosso회사에 자금 지원을 제공하는 것이다.간단하게 말하면 반응이 없다.공예가로서 Googleéseu melhor amigo입니다. 그는 공예사입니다. 그는 공예사로 새로운 공예를 개발하는 엔지니어입니다. 중요한 공예 절차도 없고 부품의 반응과 기능도 없습니다.
이것은 매우 복잡한 문제다.
⁉️ 무슨 문제예요?
아르고 무이토 봄(jáalgo muito bom)의 구성 부분으로 아르쿠보 니코(arquivo 분쿠니코)가 작성한 평가 보고서라고 이 보고서는 전했다.
App.tsx
e adicione-o abaixo <Header />
.styles.css
의 새 부품을 교체하지 않으며, background
은 새 부품을 교체할 필요가 없습니다.rodando의nosso 프로젝트에 들어가지 않았고 브라우저도 없으니 좋은 선택입니다.당신은 이것이 중요한 구성 부분이라고 생각합니까?
평가사: seletor CSS e o React importa os dois arquivos dentroda página, assim o CSS queé carregado por multimoéo sobrevere o outro.서로 다른 리그에서 우리는 서로 다른 팀을 선택할 수 있고, 서로 다른 리그에서 우리는 서로 다른 팀을 선택할 수 있다.
문제를 해결하는 과정에서 우리는 어떤 항목도 없는 상황에서 전 호위원의 이름을 명명하는 새로운 방법이 필요하다.
E. Styled Components호 공용사업빌딩 근처에 있습니다.
📐 추정 성분
O 스타일 구성 요소 fazé: ele cria uma classe com identificator 분짜 para cada component e Estilizado que criamos.Assim ele garante(Assim ele garante)는 새로운 평가 회사로, 이 회사는 응용 프로그램을 개발하는 회사다. 엘 나다(ele nada maisédo que um criador de CSS escrito em Javascript).
바스타세에서 사람들은 간단한 음식, 음식과 음식을 통해 음식의 구성 부분을 다시 이용할 수 있다.마스 와모스 파제와 스프레메로.
Vamos instalar o pacote no nosso 프로젝트:
npm i styled-components
이것은 매우 좋은 타자 원고인데, 그것은 불안정한 Também 글씨체이다.O #header
은 디자인 환경의 환경에 서비스를 제공하고 실용적인 글씨체를 제공합니다.npm i @types/styled-components -D
:pin:Se vocêestiver utilizando VSCode,existe uma extensão que nos ajudaráao trabalhar com o styled components queéessa.na documentação háferramentas para outros editores de texto.Agora, vamos alterar o arquivo
-D
섹션 styles.css
e alterar seu conte 톺do 섹션:// components/Header/styles.ts
import styled from 'styled-components'
export const Container = styled.div`
background: #5636d3;
`
친구가 누구라고요?styles.ts
년에 우리의 수출액은 지속적으로 증가할 것이다. 이것은 우리의 미래 발전 방향이 될 것이다.export const Container
éo nome que damos para a lib,poderia ser styled
se quisermos,mas vamos seguir como mostra a documentaço.batata
indica qual seráo Returno desse componente,podendo ser qualquer tag do HTML5..div
utilizando uma classeúnica.div
호 결의:// components/Header/index.tsx
import { Container } from "./styles";
function Header() {
return (
<Container>
<header>
<span>gofinances</span>
<nav>
<a href="/">Listagem</a>
<a href="/create">Cadastro</a>
</nav>
</header>
</Container>
);
}
export default Header
비모스 쿠오 Header/index.tsx
은 품질이 합격한 수출 회사로 이 회사에 대해 줄곧 평가를 하고 있다.아그라 테모스 마네라스 데프로세켈 정당:
Container
년에 글을 발표했다.// components/Header/styles.ts
import styled from 'styled-components'
export const Container = styled.div`
background: #5636d3;
span {
color: #FFF
}
`
Vamos seguir o segundo modelo,por praticidade.♻️ Resetando os estilos globalmente
많은 탭은 HTML로 표시되어 있는데, 왜냐하면 HTML로 표시되기 때문이다.Podemos ver isso nosso 항목 없음:
태그
<span>
tem uma'margin'para todos os lados de 8px.E. 파스타 추정치는 body
덴트로도 styles
이다.Dentro dessa 파스타, vamos criar um arquivo src
para nossa estiliza o 글로벌.//styles/global.ts
import { createGlobalStyle } from 'styled-components'
export default createGlobalStyle`
* {
margin: 0;
padding: 0;
outline: 0;
box-sizing: border-box;
}
body {
background: #F0F2F5 ;
-webkit-font-smoothing: antialiased
}
body, input, button {
font: 16px "Poppins", sans-serif;
}
button {
cursor: pointer;
}
`
설명:global.ts
,escrevemos nosso código CSS entre crasses.<!-- public/index.html -->
<!DOCTYPE html>
<html lang="pt_BR">
<head>
<meta charset="utf-8" />
<link rel="icon" href="%PUBLIC_URL%/favicon.ico" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="theme-color" content="#000000" />
<link rel="preconnect" href="https://fonts.gstatic.com">
<link href="https://fonts.googleapis.com/css2?family=Poppins:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&display=swap" rel="stylesheet">
<title>Go Finances</title>
</head>
<body>
<div id="root"></div>
</body>
</html>
수입 상품 시장: div
호, styles/global.ts
호 상품 제공 필요 없습니다.이와 관련해 협조자는 주로 와모스 파사르 파사르(Frend vamos passar parte do nosso código que estáno)
App.tsx
명이다.Mas porque temos que criar mais um componente? Não basta deixar tudo dentro do 'App'?
만약 당신이 우리의 제품을 재조합하고 싶다면, 우리는
App.tsx
년에 제품을 새로운 제품으로 재조합해야 한다.나의 생활은 매우 간단하다.Basta lembrar, sempre que criamos um Component que teráestiliza ço criamos uma 파스타 회사 이름은 dentro criamos um arquivo
GlobalStyle
e outro index.tsx
eCriando uma 파스타
styles.ts
dentro de pages
, Criando um 성분 src
계속://pages/Home/index.tsx
import Header from "../../components/Header";
import TransactionList from "../../components/TransactionList";
function Home() {
return (
<>
<Header />
<TransactionList />
</>
);
}
export default Home;
E Home
:import Home from "./pages/Home";
import GlobalStyle from "./styles/global";
function App() {
return (
<>
<GlobalStyle />
<Home />
</>
);
}
export default App;
💄 Deixando essa página um pouco mais bonita
Estilizaçoéalgo queémuito difçcil de aprender em 자습서.Éalgo que se aprende tanto fazer e copiar grandes designs.이 사이트의 개발자는 pelo menos um pouco sobre Flexbox e/ou Grid Layout입니다. 이 사이트는 버스 회사입니다. 그들의 레이아웃 모델은 숫자에서 유럽까지입니다. 당신은 현지 관광지에서 반응할 수 있습니다.
지역사회 사회봉사부 직원 중 아바나도 지역사회의 공공사업과 실천부서에는 Media Queries명의 책임자가 있는데 그들의 직원은 모두 지역사회 사회봉사자이다.
카소노 퀘라 토도 코디고 다키 프라 프렌트(todo o código daqui pra frente)는 최고경영자입니다. 그는 전문가입니다.
git clone -b entrypoint https://github.com/brunolipe-a/go-finances.git
이것은 수정해야 할 숫자다.A estilizaão do Header fica assim:
//components/Header/styles.ts
import styled from 'styled-components'
export const Container = styled.div`
background: #5636d3;
padding: 30px 0;
header {
width: 1120px;
margin: 0 auto;
padding: 0 20px 150px;
display: flex;
align-items: center;
justify-content: space-between;
color: #fff;
span {
font-size: 1.75rem;
font-weight: medium;
}
nav {
a {
color: #fff;
text-decoration: none;
font-size: 16px;
transition: opacity 0.2s;
padding-bottom: 6px;
border-bottom: 2px solid #FF872C;
& + a {
margin-left: 32px;
margin-right: 5px;
}
&:hover {
opacity: 0.6;
}
}
}
}
`
클리임 아쿠보엠 App.tsx
:const formatValue = (value: number): string =>
Intl.NumberFormat('pt-BR', { style: 'currency', currency: 'BRL' }).format(
value,
);
export default formatValue;
Novo componente 카드://components/Cards/styles.ts
import styled from 'styled-components';
interface CardProps {
total?: boolean;
}
export const CardContainer = styled.section`
display: grid;
grid-template-columns: repeat(3, 1fr);
grid-gap: 32px;
margin-top: -150px;
`;
export const Card = styled.div`
background: ${({ total }: CardProps): string => (total ? '#FF872C' : '#fff')};
padding: 22px 32px;
border-radius: 5px;
color: ${({ total }: CardProps): string => (total ? '#fff' : '#363F5F')};
header {
display: flex;
align-items: center;
justify-content: space-between;
font-weight: 500;
a {
background: #7159c1;
}
p {
font-size: 16px;
}
}
h1 {
margin-top: 14px;
font-size: 36px;
font-weight: 500;
line-height: 54px;
}
`;
//components/Cards/index.tsx
import formatValue from "../../utils/formatValue";
import { CardContainer, Card } from "./styles";
export interface Balance {
income: number;
outcome: number;
total: number;
}
type CardsProps = {
balance: Balance;
};
function Cards({ balance }: CardsProps) {
return (
<CardContainer>
<Card>
<header>
<p>Entradas</p>
</header>
<h1>{formatValue(balance.income)}</h1>
</Card>
<Card>
<header>
<p>Saídas</p>
</header>
<h1>{formatValue(balance.outcome)}</h1>
</Card>
<Card total>
<header>
<p>Total</p>
</header>
<h1>{formatValue(balance.total)}</h1>
</Card>
</CardContainer>
);
}
export default Cards;
Temos que remover o antigo componente Transaction List e criar Novatement e uma 파스타:// components/TransactionList/styles.ts
import styled from 'styled-components';
export const TableContainer = styled.section`
margin-top: 64px;
table {
width: 100%;
border-spacing: 0 8px;
th {
color: #969cb3;
font-weight: normal;
padding: 20px 32px;
text-align: left;
font-size: 16px;
line-height: 24px;
}
td {
padding: 20px 32px;
border: 0;
background: #fff;
font-size: 16px;
font-weight: normal;
color: #969cb3;
&.title {
color: #363f5f;
}
&.income {
color: #12a454;
}
&.outcome {
color: #e83f5b;
}
}
td:first-child {
border-radius: 8px 0 0 8px;
}
td:last-child {
border-radius: 0 8px 8px 0;
}
}
`;
// components/TransactionList/index.tsx
import formatValue from "../../utils/formatValue";
import { TableContainer } from "./styles";
export interface Transaction {
id: string;
title: string;
value: number;
type: "income" | "outcome";
category: { title: string };
created_at: string;
}
type TransactionListProps = {
transactions: Transaction[];
};
function TransactionList({ transactions }: TransactionListProps) {
return (
<TableContainer>
<table>
<thead>
<tr>
<th>Título</th>
<th>Preço</th>
<th>Categoria</th>
<th>Data</th>
</tr>
</thead>
<tbody>
{transactions.map((transaction) => (
<tr key={transaction.id}>
<td className="title">{transaction.title}</td>
<td className={transaction.type}>
{formatValue(transaction.value)}
</td>
<td>{transaction.category?.title}</td>
<td>
{new Date(transaction.created_at).toLocaleDateString("pt-br")}
</td>
</tr>
))}
</tbody>
</table>
</TableContainer>
);
}
export default TransactionList;
E번호 src/utils/formatValue.ts
:// pages/Home/styles.ts
import styled from 'styled-components';
export const Container = styled.div`
width: 100%;
max-width: 1120px;
margin: 0 auto;
padding: 40px 20px;
`;
// pages/Home/index.tsx
import { useState } from "react";
import Header from "../../components/Header";
import Cards, { Balance } from "../../components/Cards";
import TransactionList, { Transaction } from "../../components/TransactionList";
import { Container } from "./styles";
function Home() {
const [balance, setBalance] = useState<Balance>({
income: 12.12,
outcome: 6,
total: 6.12,
});
const [transactions, setTransactions] = useState<Transaction[]>([
{
id: "1",
category: { title: "Trabalho" },
title: "Venda",
type: "income",
value: 12.12,
created_at: "2021-02-03T00:00:00",
},
{
id: "2",
category: { title: "Comida" },
title: "Lanche",
type: "outcome",
value: 6,
created_at: "2021-02-21T00:00:00",
},
]);
return (
<>
<Header />
<Container>
<Cards balance={balance} />
<TransactionList transactions={transactions} />
</Container>
</>
);
}
export default Home;
Na Home temos algo novo:src/pages/Home
.실용성
useState<Transaction[]>
제<>
단은 정보원으로 용감한 전사나 군사 장교에 해당한다.아유다 아유다 아유다 아유다 아유다 아유다 아유다 아유다 아유다 아유다 아유다 아유다 아유다 아유다 아유다 아유다 아유다 아유다 아유다 아유다 아유다 아유다예를 들어 세르바 살바 우마 현악 시리즈:
useState
.용기가 넘치는 나라입니다. 그 발전 방향은.😄 가다랑어?
Aqui terminamos a estilizaão da tela de listagem.이것은 숫자로 하나의 공통된 구성 부분이다.
와모스 사태 이후의 공공시설과 소비자의 수요 때문에 영향을 받는 사람은 없다.
특히 agradecimento💜 오페소 알다 Rocketseat🚀 pelo conteúdo de qualidade em React.
Reference
이 문제에 관하여(리액션 - 보래 추정?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/brunolipea/react-bora-estilizar-1i8c텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)