[React] TanStack/React-Query ๋ฆฌ์•กํŠธ์ฟผ๋ฆฌ : ํ™”๋ฉด UI์™€ DB๋ฅผ ์‰ฝ๊ฒŒ ์—ฐ๋™ํ•˜๊ธฐ์œ„ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
ยท
๐Ÿชด React
1
[React] ์—๋Ÿฌ : Element type is invalid: ... forgot to export your component from the file it's defined in, or you might have mixed up default and named imports. (+์Šคํƒ€์ผ์ปดํฌ๋„ŒํŠธ ๋„ค์ด๋ฐ ์‹ค์ˆ˜)
ยท
๐Ÿชด React
โŒ React - Error โ—Error: Element type is invalid: expected a string (for built-in components) or a class/function (for composite components) but got: object. You likely forgot to export your component from the file it's defined in, or you might have mixed up default and named imports. ์•Œ์•„๋ณด๋‹ˆ - router component๋กœ ์„ค์ •ํ•ด๋†“์€ page ์ปดํฌ๋„ŒํŠธ๊ฐ€ export ์—†์ด ๋น„์–ด์žˆ์–ด์„œ - importํ•œ ์ปดํฌ๋„ŒํŠธ์˜ ๋„ค์ด๋ฐ ๋ฌธ์ œ๋กœ . . ๋“ฑ์œผ๋กœ ๋ฐœ์ƒํ•˜๋Š” ์—๋Ÿฌ๋ผ๊ณ  ํ•œ๋‹ค. ๋‚ด ๊ฒฝ์šฐ๋„ ์œ„์™€ ..
[React/JS/ํŒ€ํ”„์ ] ์ฆ๊ฒจ์ฐพ๊ธฐ ๊ธฐ๋Šฅ ๊ตฌํ˜„ํ•˜๊ธฐ
ยท
๐Ÿชด React
0228 ์ฆ๊ฒจ์ฐพ๊ธฐ (or ์ข‹์•„์š”) ๊ธฐ๋Šฅ์€ ๊ตฌํ˜„ํ•ด๋ณด๊ณ  ์‹ถ์—ˆ์ง€๋งŒ ํ•œ๋ฒˆ๋„ ์‹œ๋„ํ•ด๋ณธ ์ ์ด ์—†์—ˆ๋‹ค. ๋‹ค๋ฅธ ๋ถ„๋“ค์ด ํ•˜์‹  ๊ฑธ ๋ณด๋ฉด์„œ ์šฐ์™€ ์–ด๋–ป๊ฒŒ ํ•œ๊ฑฐ์ง€, ์ƒ๊ฐ๋งŒ ํ–ˆ๋˜ ๊ฑฐ ๊ฐ™๋‹ค. ๊ทผ๋ฐ ์ด๋ฒˆ ๊ธฐํšŒ์— ๊ตฌํ˜„ํ•ด๋ณผ ์ˆ˜ ์žˆ๊ฒŒ ๋ผ์„œ ๋„˜๋„˜ ๋ฟŒ๋“ฏํ•˜๊ณ  ์ข‹์€ ๊ฒฝํ—˜์ด์—ˆ๋‹ค !! ใ… ^ใ…  ์‚ฌ์‹ค ๋กœ๊ทธ์ธ/ํšŒ์›๊ฐ€์ž…์„ ๋งก์•„์ฃผ์‹  ํŒ€์›๋ถ„์ด session stroage์— ์œ ์ € uid๋ฅผ setํ•˜๊ณ , ๋‚ด๊ฐ€ ๊ทธ๊ฑธ getํ•ด์„œ ์“ฐ๋Š” ์‹์œผ๋กœ, firestore๋ฅผ ํ™œ์šฉํ•ด ๋ฐ์ดํ„ฐ ๋„ฃ๊ณ  ๊ฐ€์ ธ์˜ค๊ณ  ํ•˜๋ฉด ๋  ๊ฑฐ๋ผ๊ณ  ์ž˜ ์•Œ๋ ค์ฃผ์‹œ๊ณ , ํ•„๋“œ๊ฐ’๋„ ์–ด๋–ป๊ฒŒ ํ•  ๊ฑด์ง€ ์ž˜ ์ „๋‹ฌํ•ด์ฃผ์…”์„œ ์ •๋ง ์ˆ˜์›”ํ•˜๊ฒŒ ๋œ ๊ฒƒ ๊ฐ™๋‹ค. ์„ธ์…˜์Šคํ† ๋ฆฌ์ง€๋Š” ์ฒ˜์Œ ์จ๋ดค๋Š”๋ฐ, ๋กœ์ปฌ์Šคํ† ๋ฆฌ์ง€์™€ ์“ฐ๋Š” ๋ฐฉ๋ฒ•์ด ๋˜‘๊ฐ™์•˜๋‹ค. ๋˜ ํŒŒ์ด์–ด์Šคํ† ์–ด๋Š” ์ด์ „์— ํ™œ์šฉํ•œ ๊ฒฝํ—˜์ด ์žˆ์–ด์„œ, ๋‹ค์‹œ ๊ตฌ๊ธ€๋งํ•ด์„œ ์ž˜ ์จ๋จน์€ ๊ฑฐ ๊ฐ™๋‹ค. (๊ทผ๋ฐ ๋ฐฐ์—ด์— ์›์†Œ ์ถ”๊ฐ€,..
[React/JS/ํŒ€ํ”„์ ] api๋กœ ๋ฐ›์€ ์ •๋ณด useState ๋ฐฐ์—ด์— ๋‹ด์•„ map ๋Œ๋ฆฌ๋ฉฐ ์ถœ๋ ฅํ•˜๊ธฐ
ยท
๐Ÿชด React
ํ”„๋กœ์ ํŠธ ๋ฉ”์ธํŽ˜์ด์ง€์—์„œ ํ•„์š”ํ•œ ์ •๋ณด๋“ค์„ api - axios get ํ•ด์„œ ๊ฐ€์ ธ์˜ค๊ณ , ๊ทธ ์ •๋ณด๋“ค์„ ํ•˜๋‚˜์˜ ๊ฐ์ฒด๋กœ ๋ฌถ์–ด, ๋ฐฐ์—ด state (useState) ์— ํ•˜๋‚˜์”ฉ ๋‹ด๊ณ  map์œผ๋กœ ๋Œ๋ฆฌ๋ฉด์„œ ์ถœ๋ ฅํ–ˆ๋‹ค. ์€ ์ปดํฌ๋„ŒํŠธ ! ๊ทธ ์™ธ์—๋„ input์— ๋ถ€์—ฌํ•˜๋Š” onKeyDown ์†์„ฑ ๋“ฑ์„ ๋ฐฐ์› ๋‹ค. ์ด๋ฒˆ์—๋Š” trim() ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๋„ ์ถ”๊ฐ€ ! (๋‹ค๋ฅธ ๋ถ„๋“ค์ด ์“ฐ์‹  ์ฝ”๋“œ๋„ ์žˆ์Œ /์Šคํƒ€์ผ์ปดํฌ๋„ŒํŠธ ๋ถ€๋ถ„์€ ์ƒ๋žต) import { useEffect, useState } from 'react'; import styled from 'styled-components'; import HeaderSlider from '../sliders/HeaderSlider'; import { useMostPopularVideos } ..
[React/ํŒ€ํ”„์ ] Youtube API ์‚ฌ์šฉํ•˜๊ธฐ
ยท
๐Ÿชด React
์ด๋Ÿฐ ์‹์œผ๋กœ api ๋ฅผ ์“ฐ๋Š”๊ฒŒ ๋งž๋Š” ์ง€ ๋ชจ๋ฅด๊ฒ ์œผ๋‚˜.. ์•„๋งˆ api - axios.get ์ œ์™ธํ•œ ๋ถ€๋ถ„์€ ๋”ฐ๋กœ ๋นผ๋Š” ๊ฒŒ ์ข‹์„ ๊ฒƒ ๊ฐ™๊ธด ํ•˜๋‹ค. ...api.js import axios from 'axios'; import request from './request'; // ๋ฉ”์ธํŽ˜์ด์ง€ BodySlider - ์œ ํŠœ๋ฒ„ ์˜์ƒ ์Šฌ๋ผ์ด๋”์— ์‚ฌ์šฉ๋  youtube data api export const mainSliderDataClient = axios.create({ baseURL: import.meta.env.VITE_APP_YOUTUBE_BASE_URL_GET, headers: { 'Content-Type': 'application/json' }, responseType: 'json' }); // input: ์˜์ƒid..
[React] React-Query(aka. Tanstack-Query)
ยท
๐Ÿชด React
2.23 TanStack | High Quality Open-Source Software for Web Developers TanStack | High Quality Open-Source Software for Web Developers tanstack.com React-Query (aka. Tanstack-Query) ๋ฆฌ์•กํŠธ์ฟผ๋ฆฌ๋Š” ์„œ๋ฒ„ ์ƒํƒœ๊ด€๋ฆฌ๋ฅผ ์‰ฝ๊ฒŒ ํ•˜๋„๋ก ๋„์™€์ฃผ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ, ์„œ๋ฒ„ DB ์—ฐ๊ฒฐ ๊ด€๋ฆฌ์™€ ์ „์—ญ์ƒํƒœ๊ด€๋ฆฌ๋ฅผ ํ•œ ๋ฒˆ์— ํ•ด์ค€๋‹ค ! (Redux ๋ฏธ๋“ค์›จ์–ด์ด์ž, Redux Toolkit์— ๋‚ด์žฅ๋˜์–ด์žˆ๋Š”, Thunk์˜ ๋Œ€์ฒด์žฌ๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค. Thunk๋Š” ์š”์ƒˆ ์•ˆ ์“ฐ๋Š” ์ถ”์„ธ๋ผ๊ณ ๋„ ํ•˜๊ณ , ๋˜ Thunk๋ณด๋‹ค React-Query ๊ฐ€ ๋” ์‰ฝ๋‹ค๊ณ  ํ•œ๋‹ค.) * ๋ฆฌ์•กํŠธ์ฟผ๋ฆฌ์˜ ์„œ๋ฒ„์ƒํƒœ๊ด€๋ฆฌ ์šฉ์ด์„ฑ - ๋‹ค์Œ์˜ 4๊ฐ€์ง€๋ฅผ ..
[React] json-server์˜ ์ƒˆ๋กญ๊ฒŒ ๋ฐ”๋€ sort-order ๋ฐฉ์‹ ํŽ˜์ด์ง€๋„ค์ด์…˜ ์š”์ฒญ ( - ๋กœ ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌ)
ยท
๐Ÿชด React
๊ฐ•์˜๋ณด๊ณ  ์•ˆ ๋จนํ˜€์„œ ์ฐพ์•„๋ณด๋‹ˆ๊นŒ json-server์—์„œ ์ •๋ ฌ๋ฐฉ์‹์ด ์ƒˆ๋กญ๊ฒŒ ๋ฐ”๋€ ๊ฑฐ์˜€๋‹ค . ๊ณต์‹๋ฌธ์„œ์—๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด ๋‚˜์™€์žˆ๋Š”๋ฐ ์‚ฌ์‹ค ์ฒจ์—” ๋ด๋„ ์ž˜ ๋ชฐ๋ž๋‹ค. view๋Š” ๋‘๋ฒˆ์งธ ๊ธฐ์ค€์ธ๊ฐ€, ์ด๋Ÿฌ๋ฉด์„œ...ใ…Ž https://www.npmjs.com/package/json-server json-server > [!IMPORTANT] > Viewing alpha v1 documentation – usable but expect breaking changes. For stable version, see [here](https://github.com/typicode/json-server/tree/v0). Latest version: 1.0.0-alpha.23, last published: a month ago. Start..
[React] ๊ฐœ์ธํ”„์  ์—๋Ÿฌ : VITE ํ™˜๊ฒฝ๋ณ€์ˆ˜ ์„ค์ • ์ฃผ์˜ & ๋ฆฌ๋•์Šค ๋ชจ๋“ˆ์—์„œ state๋กœ ์œ„์น˜ ์ž˜ ์“ฐ๊ธฐ
ยท
๐Ÿชด React
2.22 ํ•ด๊ฒฐํ•˜๊ณ ๋ณด๋‹ˆ ์ •๋ง ๊ฐ€๋ฒผ์šด ์—๋Ÿฌ์˜€์ง€๋งŒ .. ์ฐพ๋Š๋ผ ๋„ˆ๋ฌด ์˜ค๋ž˜๊ฑธ๋ ธ๋‹ค .. ใ… ใ…  ๋ฆฌ๋•์Šค ํˆดํ‚ท, axios - json-server api , thunk ํ•จ์ˆ˜ ๊นŒ์ง€ ๊ฐ™์ด ์“ฐ๋ ค๋‹ค๋ณด๋‹ˆ ์ •ํ™•ํžˆ ์ž˜ ๋ชจ๋ฅด๋Š” ๋‚˜๋Š” .. ๋‹ค๋ฅธ ๋ฐ์—์„œ ์—๋Ÿฌ๊ฐ€ ๋‚œ ์ค„ ์•Œ๊ณ  ํ•œ์ฐธ์„ ํ—ค๋งธ๋‹ค ๐Ÿ˜ญ ์ฝ˜์†”๋กœ ์ผ์ผํžˆ ํ•˜๋‚˜ํ•˜๋‚˜ ์ฐ์–ด๊ฐ€๋ฉฐ ๋‹ค์‹œ ์—๋Ÿฌ๋ฅผ ํŒŒ์•….. ํ•˜์ง€๋งŒ ์ด ์ฐธ์— useSelector ๋กœ state ๋ถˆ๋Ÿฌ์˜ฌ ๋•Œ๋ผ๋“ ๊ฐ€ ์ •ํ™•ํžˆ ์•Œ๊ฒŒ ๋๋‹ค !! // CommentList.jsx const commentList = useSelector((state) => state.comments.commentsData); .. useEffect(() => { dispatch(__getComments()); }, [dispatch]); ๐Ÿ”ฅProblem ๋ฆฌ๋•์Šคํˆดํ‚ท์œผ..
[React/Vite] ์—๋Ÿฌํ•ด๊ฒฐ: Vite ํ”„๋กœ์ ํŠธ .env ํ™˜๊ฒฝ๋ณ€์ˆ˜๋Š” process.env => import.meta.env๋กœ ์จ์ฃผ๊ธฐ
ยท
๐Ÿชด React
๋ฐฐ์šด ๋Œ€๋กœ .env ํŒŒ์ผ์„ ํ†ตํ•ด ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์„ค์ •์„ ํ•˜๊ณ  .. ๊นƒํ—™์— ๊ทธ๋ƒฅ ์˜ฌ๋ผ๊ฐ€๋Š” ๋ฐ”๋žŒ์— .gitignore ์„ค์ •๋„ ๊ตฌ๊ธ€๋ง์„ ํ†ตํ•ด ํ•ด์„œ ํ•ด๊ฒฐ! ๊ทผ๋ฐ ์ด๋ฒˆ์—๋Š” ํ™˜๊ฒฝ๋ณ€์ˆ˜๋ฅผ ๊ฐ€์ ธ์˜ค๋Š”๋ฐ ๋ฐฐ์šด๋Œ€๋กœ process.env .. ์ด๋ ‡๊ฒŒ ๊ฐ€์ ธ์˜ค๋Š”๋ฐ ์—๋Ÿฌ๊ฐ€ ๋‚ฌ๋‹ค. ํŽ˜์ด์ง€๋Š” ํฐํ™”๋ฉด๋งŒ ๋œจ๊ณ .. ๐Ÿ˜ญ ์ž๊พธ process is not defined ๋ผ๊ณ  ์ฝ˜์†”์ฐฝ์— ๋–ด๋‹ค. ํ•˜์ง€๋งŒ ํ™˜๊ฒฝ๋ณ€์ˆ˜ ๊ฐ€์ ธ์˜ฌ๋•Œ process.env. . ๋งž๋Š”๋ฐ?! ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ฝ”๋“œ๋ฅผ ์ผ๋Š”๋ฐ- (.envํŒŒ์ผ์—์„œ๋Š” REACT_APP_SERVER_URL = http://... ๋งž๊ฒŒ ์จ์คŒ) (์ฐธ๊ณ ๋กœ " " ์Œ๋”ฐ์˜ดํ‘œ๋Š” ์›๋ž˜ ์•ˆ๋„ฃ๋Š” ๊ฒƒ์œผ๋กœ ์•Œ์ง€๋งŒ, ์Œ๋”ฐ์˜ดํ‘œ๋ฅผ ์จ๋„ ๋ฌธ์ œ ์—†์ด ์ž˜ ๋–ด๋‹ค) import axios from "axios"; const commentClient = a..
[React] ๋น„๋™๊ธฐ ํ†ต์‹  - axios
ยท
๐Ÿชด React
240220 TIL ๐Ÿƒ‍โ™€๏ธ ์ €๋ฒˆ ๊ธ€์—์„œ, ๋น„๋™๊ธฐ ํ†ต์‹  ๋ฐฉ๋ฒ• ์ค‘ fetch์™€ axios ๊ฐ€ ์žˆ๋‹ค๊ณ  ์†Œ๊ฐœํ•˜๊ณ  fetch์— ๋Œ€ํ•ด ์•Œ์•„๋ดค์—ˆ๋‹ค. fetch๋Š” axios์— ๋น„ํ•ด ๋ถˆํŽธํ•œ ์ ์ด ์žˆ์—ˆ๋Š”๋ฐ (json์œผ๋กœ ๋”ฐ๋กœ ๋ณ€ํ™˜ํ•ด์ค˜์•ผ ํ•˜๊ฑฐ๋‚˜ ์—๋Ÿฌ ์ฒ˜๋ฆฌ ๋“ฑ์— ์žˆ์–ด์„œ) axios๋Š” ๊ทธ์— ๋น„ํ•ด ๊ธฐ๋Šฅ์  ์žฅ์ ์ด ์žˆ์–ด์„œ, ์ง€๊ธˆ ์ง„ํ–‰ํ•˜๋Š” ํ”„๋กœ์ ํŠธ๋‚˜ ์•ž์œผ๋กœ ๋งŽ์ด ํ™œ์šฉํ•ด๋ณผ ๊ฒƒ ๊ฐ™๋‹ค! * Axios ๋ž€ node.js์™€ ๋ธŒ๋ผ์šฐ์ €๋ฅผ ์œ„ํ•œ Promise ๊ธฐ๋ฐ˜ http ํด๋ผ์ด์–ธํŠธ. http๋ฅผ ์ด์šฉํ•ด์„œ ์„œ๋ฒ„์™€ ํ†ต์‹ ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ํŒจํ‚ค์ง€ - ํ•˜์ง€๋งŒ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์— ๋‚ด์žฅ๋œ fetch์™€ ๋‹ฌ๋ฆฌ, axios๋Š” ํŒจํ‚ค์ง€ ์„ค์น˜๋ฅผ ๋”ฐ๋กœ ํ•ด์ค˜์•ผ ํ•œ๋‹ค. ์•„๋ž˜ ๋ช…๋ น์–ด๋กœ ์„ค์น˜ํ•ด์ฃผ๊ธฐ! yarn add axios ํ˜น์€ npm install axios - ์‚ฌ์šฉํ•˜๋ ค๋ฉด ํŒจํ‚ค..