๋ชฉ๋กreact (30)
๐ค ์์งlog ๐ค
const App = () => { const queryClient = new QueryClient(); return ( ; ); }; react-query ์ฌ์ฉ์ App.ts ๋ฅผ ๊ฐ์ธ์ฃผ์ด์ผํ๋ค. ๐ QueryClientProvider ๋ก ๊ฐ์ธ์ฃผ์ง ์์์ ์๊ธฐ๋ ์ค๋ฅ ๐
๐ก useQuery API์ฐ๋์ ํนํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก Hook์ ๊ธฐ๋ฐ์ผ๋ก ๋ฐ์ดํฐ ๋ก๋ฉ์ ํธํ๊ฒ ๊ตฌํํ๋๋ก ๋์์ค๋๋ค. ๋ฐํ ๊ฐ์ ํ์ฉํ์ฌ ์ฑ๊ณต, ์คํจ ์ฒ๋ฆฌ๊ฐ ๊ฐ๋ฅํฉ๋๋ค. ( isFetching, isLoading, error, state ๋ฑ ) Status isLoading : ํ์ฌ ๋ฐ์ดํฐ ์์ฒญ ์ค isError : ์ค๋ฅ ๋ฐ์ isSuccess : ๋ฐ์ดํฐ ์์ฒญ ์ฑ๊ณต data : ์์ฒญ ์ฑ๊ณตํ ๋ฐ์ดํฐ refetch : ๋ค์ ์์ฒญ์ ์์ํ๋ ํจ์ const Ex = () => { const result = useQuery('posts', postData); const { data, error, isLoading } = result; if (isLoading) return Loading...; if (error)..
๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ง ์๊ณ { useState, useCallback, useEffect, useRef } ๋ฅผ ์ฌ์ฉํด์ ์ง์ ๊ตฌํํด๋ณด๊ธฐ๋ก ํ์๋ค ! ๐ฅ ์ฌ์ฉํ๊ธฐ๋ง ํด๋ดค์ง ์ง์ ๊ตฌํํ๋๋ฐ์๋ ๋๋ฌด ์ด๋ ต๊ณ ์ดํด๋ ์ ์๋์์ง๋ง ์ ๋ณด๋ ๋ง์๊ณ , ๋์๋ ๋ฐ์๊ฐ๋ฉฐ ์ด๊ฒ ์ ๊ฒ ์๋ก ์๋ํด๋ณด๋ ์ฌ๋ฏธ๋์์๋ค -๐ ๐ ๊ตฌํ ์ฝ๋ import { useState, useCallback, useEffect, useRef } from "react"; import styled from "styled-components"; import { getPostList, postType } from "datas/postList"; const List = (): JSX.Element => { const [page, setPage] = us..
๋ฐ์ํ ์น์ด ์น ๋ ์ด์์์ ๋ง๋๋ ๊ธฐ์ค์ด ๋๋ฉด์ ๋ฐ์ํ ๋ ์ด์์์ ํ์ํ๊ธฐ ์ํ ๋๋ฐ์ด์ค๋ฅผ ๊ตฌ๋ถํ๋ ์ฌ๋ฌ๊ฐ์ง ๋ฐฉ๋ฒ๋ค์ด ์ฌ์ฉ๋๊ณ ์์ต๋๋ค. ๋ํ์ ์ผ๋ก CSS ๋ฏธ๋์ด์ฟผ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ด ์๊ณ , ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํ๊ธฐ๋ ํฉ๋๋ค. ์ด๋ค ๊ฒ์ ์ฌ์ฉํ๋๋ผ๋ ๋ฐ์ํ ๋ ์ด์์์ ๋๋ฐ์ด์ค์ ๋ฐ๋ผ ๊ตฌ๋ถํ๋ ๊ธฐ์ค์ ๊ฐ๋ก ๋๋น์ ๋๋ค. ๊ฐ๋ก ๋๋น ๊ฐ์ ๋ฐ๋ผ ๋๋ฐ์ด์ค๋ฅผ ์ธ์ํ๊ณ , ๋ ์ด์์์ ๊ฑฐ๊ธฐ์ ๋ง์ถฐ ๋ณ๊ฒฝํ๋ ๊ฒ์ด CSS ๋ฐ์ํ ๋ ์ด์์์ ๊ธฐ๋ณธ ๊ฐ๋ ์ ๋๋ค. ๊ฐ๋ก ๋๋น๋ฅผ ๊ธฐ์ค์ผ๋ก ํ๋ ๊ฒ์ ๋ฐ์ํ ๋ ์ด์์์์ ๊ณตํต์ด์ง๋ง, ๋๋ฐ์ด์ค ์ข ๋ฅ๋ณ ๋๋น ๊ฐ ๊ธฐ์ค์ ์ ๊ฐ๊ฐ์ ๋๋ค. ๋ณ๋๋ก ์ ํด์ง ํ์ค์ด๋ผ๋ ๊ฒ์ด ์๊ธฐ ๋๋ฌธ์ ์ ๊ณ์์ ๋ง์ด ์ฌ์ฉํ๋ ๊ฐ์ ๊ธฐ์ค์ผ๋ก ํ๊ธฐ๋ ํ๊ณ , ๋ ์ด์์ ํน์ง์ ๋ง์ถฐ ๊ฐ๋ณ์ ์ธ ๊ฐ์ ์ ํ๊ธฐ๋ ํฉ๋๋ค. ์์ด๋ก๋ ๋๋..
๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ง ์๊ณ { useState ์ useEffect } ๋ฅผ ์ฌ์ฉํด์ ์ง์ ๊ตฌํํด๋ณด๊ธฐ๋ก ํ์๋ค ! ๐ฅ ๊ทธ์ ์๋ react-bootstrap์ผ๋ก๋ง ํด๋ดค๋ํฐ๋ผ,, ์กฐ๊ธ ๊ฑฑ์ ํ๋๋ฐ ์ญ์๋ ์ด๋ ค์ ์ง๋ง ์ ๋ณด๋ ๋ง์๊ณ , ์ด๊ฒ ์ ๊ฒ ์๋ก ์๋ํด๋ณด๋ ์ฌ๋ฏธ๋์์๋ค -๐ ๐ ๊ตฌํ ์ฝ๋ import { useEffect, useState } from "react"; import { Link } from "react-router-dom"; import styled from "styled-components"; import { SLIDE_DATA } from "datas/slide"; const Banner = () => { const [currentSlide, setCurrentSlide] = useState(..
์ข ์ฐ ๋ก ์นดํ ๊ณ ๋ฆฌ ์ด๋ ๋ฐ ํฐ์น์ฌ๋ผ์ด๋๋ฅผ ๊ตฌํํด์ผ ํ๋ ์ํฉ์ด์๋๋ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉ์์ด ์ฒ์๋ถํฐ ๊ตฌํํ๊ณ ์ถ์์ง๋ง ์์ง ๋ด์ค๋ ฅ์ผ๋ก ๋ฌด๋ฆฌ,, ์ใธใ ;,, ์ฌ๋ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ๋ง์์ง๋ง ๋๋ Swiper ์ผ๋ก ๊ตฌํํด๋ณด๊ธฐ๋ก ํ์๋ค ! ๐ Swiper ์ค์น npm install swiper ๐ Swiper ์์ ์ฝ๋ import { Swiper, SwiperSlide } from 'swiper/react'; import { Pagination, Mousewheel, Keyboard } from 'swiper'; import 'swiper/css'; import 'swiper/css/pagination'; function () { return ( { console.log(swiper.activeIndex); }} ..
onChange, Click, KeyPress import { useState } from 'react' const EventPractice = () => { const [message, setMessage] = useState('') const handleClick = () => { alert(message) } const handleKeyPress = (e) => { if (e.key === 'Enter') { alert(message) } } return ( ์ด๋ฒคํธ ์ฐ์ต { setMessage(e.target.value) }} onKeyPress={handleKeyPress} /> ํ์ธ ) } export default EventPractice import { useState } from 'reac..
๋ฐ๋ณต์ ์ ์ฌ์ฉํ๋๊ฒ react์์ ์ฝ๋๋ฅผ ์ค์ผ์ ์๋ ์ค์ํ ๋ฐฉ๋ฒ์ด๋ค. react์์ ๋ฐ๋ณต์ ์ฌ์ฉํ ๋๋ ๋ฐฐ์ด์ ์ด์ฉํ๋ค. map ํจ์๋ ๋ฐฐ์ด์์ ์ฌ์ฉํ๋ ํจ์์ด๊ณ ์ฌ์ฉ์ ์๋ก์ด ํจ์๊ฐ ๋ฐํ๋๋ค. const number = [1,2,3,4,5] const newNumbers = number.map( (e) =>{ console.log(e) }) // (e)๊ฐ ๊ฐ๊ฐ ์์๊ฐ ๋์ด 1 2 3 4 5 ๊ฐ ๋ฐํ๋๋ค. --- const numbers = [1,2,3,4,5] numbers.map( (number, i)=>{ console.log(i) }) // 0 1 2 3 4 --- const numbers = [1,2,3,4,5] const newNumbers = numbers.map((number, i) =>..
Hooks ๋ ๋ฆฌ์กํธ v16.8 ์ ์๋ก ๋์ ๋ ๊ธฐ๋ฅ์ผ๋ก์, ํจ์ํ ์ปดํฌ๋ํธ์์๋ ์ํ ๊ด๋ฆฌ๋ฅผ ํ ์ ์๋ useState, ๊ทธ๋ฆฌ๊ณ ๋ ๋๋ง ์งํ ์์ ์ ์ค์ ํ๋ useEffect ๋ฑ์ ๊ธฐ๋ฅ๋ฑ์ ์ ๊ณตํ์ฌ ๊ธฐ์กด์ ํจ์ํ ์ปดํฌ๋ํธ์์ ํ ์ ์์๋ ๋ค์ํ ์์ ์ ํ ์ ์๊ฒ ํด์ค๋ค. โ๏ธ useState import { useState } from 'react' const [๋ณ์, set(๋๋ฌธ์)๋ณ์] = useState(''); setํจ์์ ์์ ๊ฐ prev( ) ์ ๋ฃ๊ณ ์ถ์ผ๋ฉด ์ฝ๋ฐฑํจ์๋ฅผ ์ฌ์ฉํด์ผํ๋ค. filter ํจ์๋ ์ฝ๋ฐฑ ํจ์์ ์กฐ๊ฑด์ ํด๋นํ๋ ๋ชจ๋ ์์๊ฐ ์๋ ๋ฐฐ์ด์ ์๋ก ์์ฑํ๋ ๊ธฐ๋ฅ์ ํ๋ค. import { useState } from 'react' const Counter2 = () => { c..
useEffect(() => {},[]) useEffect 2๋ฒ์งธ ์ธ์์ ๋น ๋ฐฐ์ด์ ๋ฃ์ด์ฃผ๊ฒ ๋๋ฉด ์ปดํฌ๋ํธ๊ฐ ์ฒ์ ๋ ๋๋ง ๋ ๋๋ง ์คํ๋๋ค. ๐ useEffect ์ค๋ฅ๋ก 2๋ฒ ์คํ ๋ ๋ ๐ src/index.js์์ ํ๊ทธ๋ก ์ด ๊ฐ์ธ์ ธ์์ผ๋ฉด ๊ฐ๋ฐ๋ชจ๋์์ ๋ ๋ฒ์ฉ ๋ ๋๋ง๋๋ค. import React from 'react' import ReactDOM from 'react-dom/client' import App from './App' import reportWebVitals from './reportWebVitals' import './index.css' const root = ReactDOM.createRoot(document.getElementById('root')) root.render( โฌ ์ง์ฐ๊ธฐ , ..