2022.1.25 TIL

๊ถŒ์œค๊ฒฝยท2022๋…„ 1์›” 25์ผ
0

TIL

๋ชฉ๋ก ๋ณด๊ธฐ
14/15
post-thumbnail
  1. Styled Component
  2. React Query
  3. React Helmet

Styled Component

styled-comoponent ๋ž€?

Javascript ํŒŒ์ผ๋‚ด์—์„œ CSS๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ๋Œ€ํ‘œ์ ์ธ CSS-in-JS๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ Reactํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์ฃผ์š” ๋Œ€์ƒ์œผ๋กœ ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ด๋‹ค.

styled-component ๋Š” css์˜ ํด๋ž˜์Šค ๋„ค์ž„ ์ค‘๋ณต ์‚ฌ์šฉ ์‹œ ์ƒ๊ธฐ๋Š” ๋ฒ„๊ทธ ๋ฐฉ์ง€์™€ ๊ตฌ์กฐ์ ์œผ๋กœ ์ปดํฌ๋„ŒํŠธ์™€ ์Šคํƒ€์ผ์ด ๋ฌถ์—ฌ์žˆ์–ด ๊ด€๋ฆฌ์— ์šฉ์ดํ•˜๋‹ค.

styled-component ์‚ฌ์šฉ

import React from "react";
import styled from "styled-component";

const Container = styled.div`
    color: white;
    background-color: grey;
    p{
    	font-size: 24px;
    }
    &:hover{
    	color: blue;
    }
`;

function App() {
	return (
    	<Container>
        	<p>Hello</p>
        </Container>
    )
}

export default App

๊ธฐ๋ณธ์ ์œผ๋กœ ์œ„ ์ฝ”๋“œ์™€ ๊ฐ™์ด ์‚ฌ์šฉ๋˜๋ฉฐ, styled-component๋Š” props๋ฅผ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

styled-component์˜ props ์‚ฌ์šฉ

import React from "react";
import styled from "styled-component";

const Container = styled.div`
    color: ${(props) => props.color || "white"};
    background-color: grey;
    p{
    	font-size: 24px;
    }
    &:hover{
    	color: blue;
    }
`;

function App() {
	return (
    	<Container>
        	<p>Hello</p>
        </Container>
    )
}

export default App

color์— ๋Œ€ํ•œ props๊ฐ€ ์กด์žฌํ•  ์‹œ ํ•ด๋‹น ์ƒ‰์ƒ์„ ์ถœ๋ ฅํ•˜๊ณ  ์—†์„ ์‹œ ํฐ์ƒ‰์œผ๋กœ ์ถœ๋ ฅํ•  ์ˆ˜ ์žˆ๋‹ค.

React Query

react-query ๋ž€?

์„œ๋ฒ„์˜ ๊ฐ’์„ ํด๋ผ์ด์–ธํŠธ์— ๊ฐ€์ ธ์˜ค๊ฑฐ๋‚˜, ์บ์‹ฑ, ๊ฐ’ ์—…๋ฐ์ดํŠธ, ์—๋Ÿฌํ•ธ๋“ค๋ง ๋“ฑ ๋น„๋™๊ธฐ ๊ณผ์ •์„ ๋”์šฑ ํŽธํ•˜๊ฒŒ ํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ด๋‹ค.

react-query ๋Š” ์•„๋ž˜์™€ ๊ฐ™์€ ์žฅ์ ์ด ์žˆ๋‹ค.

โœ… ๊ฐ„๊ฒฐํ•œ fetch ๋กœ์ง

๊ธฐ์กด์˜ ๋ฐ์ดํ„ฐ fetch์—๋Š” ๋กœ๋”ฉ ์ƒํƒœ ๊ด€๋ฆฌ, ํŽ˜์นญํ•œ ๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ ๋“ฑ์„ ์œ„ํ•ด ์—ฌ๋Ÿฌ ํ›…์„ ์‚ฌ์šฉํ–ˆ์œผ๋‚˜, react-query๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๊ฐ„๊ฒฐํ•˜๊ฒŒ fetch ๋กœ์ง์„ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

โœ… fetcher ํ•จ์ˆ˜๋ฅผ ๋”ฐ๋กœ ๋ถ„๋ฆฌํ•˜์—ฌ ์ปดํฌ๋„ŒํŠธ๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.

โœ… casing(๋ฐ์ดํ„ฐ๋ฅผ ์บ์‹œ์— ์ €์žฅ) ์„ ํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ๋ฐ์ดํ„ฐ ์†์‹ค์„ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค.

React Helmet

์›น ๋ฌธ์„œ์˜ ํ—ค๋” ๊ฐ’์„ ๋ณ€๊ฒฝํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๋ฆฌ์•กํŠธ ์ปดํฌ๋„ŒํŠธ์ด๋‹ค. React๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ์—๋Š” ์ปดํฌ๋„ŒํŠธ์— head ํƒœ๊ทธ๋ฅผ ์ง์ ‘ ์ง€์ •ํ•˜๋Š”๊ฒŒ ์–ด๋ ค์šฐ๋‚˜ react-helmet์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ณ€๊ฒฝ์ด ์‰ฝ๋‹ค.

react-helmet ์‚ฌ์šฉ

import React from "react";
import { Helmet } from "react-helmet";

function App (){
	return(
    	<div>
        	<Helmet>
            	<title>์‚ฌ์ดํŠธ ์ œ๋ชฉ</title>
            </Helmet>
        </div>
    )
}
export default App

์œ„์™€ ๊ฐ™์ด ์ฝ”๋“œ๋ฅผ ์ ์šฉํ•˜๋ฉด ์›น ๋ฌธ์„œ์˜ title์ด ๋ณ€๊ฒฝ๋˜์–ด ์ถœ๋ ฅ๋˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

0๊ฐœ์˜ ๋Œ“๊ธ€