์ฝ”๋”ฉ์• ํ”Œ

ยท React
์˜ค๋Š˜์€ ๋ญ˜ ํ•ด๋ณผ๊ฑฐ๋ƒ๋ฉด JSON.stringify์™€ JSON.parse์— ๋Œ€ํ•ด์„œ ๊ฐ„๋‹จํžˆ ์•Œ์•„๋ณด๊ณ , localStorage ์— ์ตœ๊ทผ ๋ณธ ์ƒํ’ˆ์˜ id๋ฅผ ๋ฐฐ์—ด๋กœ ๋‹ด์•„๋ณด๋Š” ๊ธฐ๋Šฅ์„ ๋งŒ๋“ค์–ด๋ณด๊ฒ ์Šด๋‹ค JSON.stringify ์™€ JSON.parse ์—ฌ๊ธฐ ํ•œ ๊ฐ์ฒด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค let obj = {name: 'kim'} ๋งŒ์•ฝ ์ด ์ƒํƒœ๋กœ localStorage.setItem('data', obj) ํ•ด๋ฒ„๋ฆฐ๋‹ค๋ฉด ์˜ˆ์œ {name: 'kim'} ์š” ์ƒํƒœ๋กœ ์ €์žฅ์ด ๋˜์ง€ ์•Š๊ณ , localStorage์˜ value์— [object Object] ๋ผ๋ฉฐ ๊ฐ์ฒด๊ฐ€ ๊นจ์ ธ์„œ ๋‚˜์˜ฌ๊ฒ๋‹ˆ๋‹ค ๊นจ์ ธ์„œ ์•ˆ๋‚˜์˜ค๊ณ  ์ด์œ ์ƒํƒœ๋กœ obj๋ฅผ ๋ณด์กดํ•˜๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผํ• ๊นŒ? JSON.stringify๋กœ obj๋ฅผ ๊ฐ์‹ธ๋ฉด ๋ฉ๋‹ˆ๋‹ค! ๊ทธ๋ ‡๋‹ค๋ฉด ๋ฐ˜๋Œ€๋กœ JSON ํ˜•์‹์„ ๊ธฐ์กด ๊ฐ์ฒด ํ˜•..
ยท React
์‹ค๋ ฅํ–ฅ์ƒ ์‘์šฉ๋ฌธ์ œ๋“ค : ์‘์šฉ1. ํ‘œ์˜ ํ–‰๋งˆ๋‹ค ์‚ญ์ œ๋ฒ„ํŠผ ๋งŒ๋“ค๊ณ  ๊ทธ๊ฑฐ ๋ˆ„๋ฅด๋ฉด ์ƒํ’ˆ์ด ์‚ญ์ œ๋˜๊ฒŒ ๋งŒ๋“ค๋ ค๋ฉด? ์‘์šฉ2. ์ฃผ๋ฌธํ•˜๊ธฐ ๋ฒ„ํŠผ ๋ˆ„๋ฅผ ๋•Œ ์ด๋ฏธ ์ƒํ’ˆ์ด state์•ˆ์— ์žˆ์œผ๋ฉด ์ถ”๊ฐ€๊ฐ€ ์•„๋‹ˆ๋ผ ๊ธฐ์กด ํ•ญ๋ชฉ ์ˆ˜๋Ÿ‰์ฆ๊ฐ€๋งŒ? ์‘์šฉ1. ํ‘œ์˜ ํ–‰๋งˆ๋‹ค ์‚ญ์ œ๋ฒ„ํŠผ ๋งŒ๋“ค๊ณ  ๊ทธ๊ฑฐ ๋ˆ„๋ฅด๋ฉด ์ƒํ’ˆ์ด ์‚ญ์ œ๋˜๊ฒŒ ๋งŒ๋“ค๋ ค๋ฉด? (Cart.js) # ์ƒํ’ˆ๋ช… ์ˆ˜๋Ÿ‰ ๋ณ€๊ฒฝํ•˜๊ธฐ ์‚ญ์ œํ•˜๊ธฐ {/*๋ฐ์ดํ„ฐ ๊ฐฏ์ˆ˜์— ๋งž๊ฒŒ ํ‘œ ์ƒ์„ฑํ•ด๋‹ฌ๋ผ๊ณ  ๋ฐ˜๋ณต๋ฌธ์“ฐ๋Š” ๊ฒƒ๋„ ์ข‹์„๋“ฏ์š”*/} {/*map์œผ๋กœ html ์ƒ์„ฑํ• ๋•Œ ์ผ๋‹จ {}๋ถ€ํ„ฐ ์“ด๋‹ค */} { carts.map((item,i)=>{ return ( {carts[i].id} {carts[i].name} {carts[i].count} { dispatch((changeCount(carts[i].id))) }}>โž• {/*๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด ์ƒํ’ˆ์ด..
ยท React
Redux store์— ์ €์žฅ๋œ state๊ฐ€ array,object ์ž๋ฃŒ์ธ ๊ฒฝ์šฐ, state ๋ณ€๊ฒฝ์„ ์ข€ ํŽธ๋ฆฌํ•˜๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋‹ค ๊ทธ ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด์ž redux state๊ฐ€ array/object์ธ ๊ฒฝ์šฐ ๋ณ€๊ฒฝํ•˜๋ ค๋ฉด let user = createSlice({ name : 'user', initialState : {name : 'kim', age : 20}, reducers : { changeName(state){ state.name = 'park' } } ์ง์ ‘ state๋ฅผ ์ˆ˜์ •ํ•ด๋„ ๋ณ€๊ฒฝ์ด ์ž˜ ๋ฉ๋‹ˆ๋‹ค array/object ์ž๋ฃŒ์˜ ๊ฒฝ์šฐ state๋ณ€๊ฒฝ์€ state๋ฅผ ์ง์ ‘ ์ˆ˜์ •ํ•ด๋ฒ„๋ ค๋„ ์ž˜ ๋˜๋‹ˆ๊นŒ ์ง์ ‘ ์ˆ˜์ •ํ•˜์‹ญ์‹œ์˜ค. ๋งŒ์•ฝ,๋ฒ„ํŠผ์„ ๋ˆŒ๋ €์„๋•Œ ๋ณ€๊ฒฝํ•˜๋ ค๋Š” ์ž๋ฃŒ์˜ +1์„ ํ•ด์ฃผ๊ณ  ์‹ถ์œผ๋ฉด? let user = createSlice..
ยท React
Redux ์˜ state๋ฅผ ๋ณ€๊ฒฝํ•˜๊ณ  ์‹ถ๋‹ค๊ณ ์š”? ๊ทธ๋Ÿฌ๋ฉด 3๊ฐ€์ง€ ๋‹จ๊ณ„๋ฅผ ๋”ฐ๋ฅด์„ธ์š” store.js ์— state ๋ณ€๊ฒฝํ•ด์ฃผ๋Š” ํ•จ์ˆ˜๋ถ€ํ„ฐ ๋งŒ๋“ค๊ณ  ๊ทธ ํ•จ์ˆ˜๋ฅผ export ํ•ด๋‘๊ณ  ํ•„์š”ํ• ๋•Œ import ํ•ด์„œ dispatch()๋กœ ๊ฐ์‹ธ์„œ ํ˜ธ์ถœํ•จ 1. store.js์— state ๋ณ€๊ฒฝํ•ด์ฃผ๋Š” ํ•จ์ˆ˜๋ถ€ํ„ฐ ๋งŒ๋“ค์–ด์š” import { configureStore, createSlice } from '@reduxjs/toolkit' //reducer ๋’ค์—๋Š” state ๋ณ€๊ฒฝํ•จ์ˆ˜๋ฅผ ๋„ฃ๋Š”๋‹ค let user = createSlice({ name: 'user', initialState: 'kim', reducers: { //reducers์ฆˆ ๋ž€๋‹ค. changeName(state){ // ํŒŒ๋ผ๋ฏธํ„ฐ state๋Š” ๊ธฐ์กดstate๋ฅผ ๋œปํ•จ return 'J..
ยท React
Redux-toolkit๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์™œ ์”€? props ์—†์ด๋„ ์ปดํฌ๋„ŒํŠธ๊ฐ„ state ๊ณต์œ ๊ฐ€ ๊ฐ€๋Šฅํ•ด์ง ,, ๋“ฑ ์ปดํฌ๋„ŒํŠธ๋“ค์ด redux store.js ์—์„œ state๋“ค์„ ๊ฐ€์ ธ๋‹ค ์“ธ ์ˆ˜ ์žˆ์Œ Redux store์— state ๋ณด๊ด€ํ•˜๋Š” ๋ฒ• ํฌ๊ฒŒ ๋‘๊ฐ€์ง€๋กœ ๋‚˜๋‰ฉ๋‹ˆ๋‹ค 1. ๋จผ์ €, createSlice() ๋กœ state๋ฅผ ๋งŒ๋“ค๊ณ  2. ์•„๋ž˜์— configureStore()์— ๋“ฑ๋กํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค import { configureStore, createSlice } from '@reduxjs/toolkit' //์—ฌ๊ธฐ์— state๋ฅผ ๋งŒ๋“ค๊ฑฐ์ž„ //createSlice๋Š” useState์™€ ๋น„์Šทํ•œ ์—ญํ• ์ž„. state ์ƒ์„ฑ // state ํ•˜๋‚˜๋ฅผ slice ๋ผ๊ณ  ๋ถ€๋ฆ„ //initialState ๋’ค์—๋Š” ์ดˆ๊ธฐ๊ฐ’ state๋ฅผ ๋„ฃ์Œ let u..
ยท React
์Šค์Šค๋ฅต ๋‚˜์˜ค๋Š” ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ๋งŒ๋“ค๊ณ  ์‹ถ๋‹ค๋ฉด? ์• ๋‹ˆ๋ฉ”์ด์…˜ ๋™์ž‘์ „ ์Šคํƒ€์ผ์„ ๋‹ด์„ className์„ ๋งŒ๋“ค๊ธฐ ์• ๋‹ˆ๋ฉ”์ด์…˜ ๋™์ž‘ํ›„ ์Šคํƒ€์ผ์„ ๋‹ด์„ className์„ ๋งŒ๋“ค๊ธฐ transition ์†์„ฑ๋„ ์ถ”๊ฐ€ ์ฒ˜์Œ์—๋Š” ๋–ผ์—‡๋‹ค๊ฐ€ ๋ถ™์ด๊ธฐ ์ด ์ˆœ์„œ์— ๋”ฐ๋ผ์„œ ์ €๋ฒˆ ๊ฒŒ์‹œ๋ฌผ์—์„œ ๋งŒ๋“ค์—ˆ๋˜ ํƒญ์˜ ๋‚ด์šฉ์ด ์„œ์„œํžˆ ๋“ฑ์žฅํ•˜๋Š” fade in ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ๋งŒ๋“ค์–ด๋ณด๊ฒƒ์Œ ๋จผ์ €, ์• ๋‹ˆ๋ฉ”์ด์…˜ ๋™์ž‘์ „ํ›„ ์Šคํƒ€์ผ์„ ๋‹ด์„ className์„ ๋งŒ๋“ค๊ณ , transition ์†์„ฑ๋„ ์ถ”๊ฐ€ํ•ด๋ณผ๊ฒŒ์š” (cssํŒŒ์ผ) .start{ opacity:0; /* ์•ˆ๋ณด์ž„ */ } .end{ opacity:1; /* ๋ณด์ž„ */ transition: opacity 0.5s; /* ์ฒœ์ฒœํžˆ ๋ณด์ž„ */ } ๋‹ค์Œ์œผ๋กœ '๋ฒ„ํŠผ์„ ๋ˆ„๋ฅผ๋•Œ๋งˆ๋‹ค end๋ฅผ ๋ถ€์ฐฉํ•ด์ฃผ์„ธ์š”~!' useEffect๋ฅผ ์จ์„œ st..
ยท React
๋™์ ์ธ UI ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ• 1. html, css ๋กœ ๋ฏธ๋ฆฌ ๋””์ž์ธ ์™„์„ฑํ•ด๋‘๊ณ  2. UI์˜ ํ˜„์žฌ์ƒํƒœ๋ฅผ ์ €์žฅํ•  state ํ•˜๋‚˜ ๋งŒ๋“ค๊ณ  3. state์— ๋”ฐ๋ผ์„œ UI๊ฐ€ ์–ด๋–ป๊ฒŒ ๋ณด์ผ์ง€ ์ž‘์„ฑํ•˜๊ธฐ ๋จผ์ €, ๋ฒ„ํŠผ0 ๋ฒ„ํŠผ1 ๋ฒ„ํŠผ2 ๋‚ด์šฉ0 ๋‚ด์šฉ1 ๋‚ด์šฉ2 ๋””์ž์ธํ•˜๊ธฐ ๊ท€์ฐฎ์•„์„œ ๋ฒ„ํŠผ์€ react-bootstrap ์‚ฌ์ดํŠธ์—์„œ ๋ณต์‚ฌํ•จ ๋‘๋ฒˆ์งธ๋กœ, UI์˜ ํ˜„์žฌ์ƒํƒœ๋ฅผ ์ €์žฅํ•  state๋ฅผ ๋งŒ๋“ค๊ธฐ function Detail(){ let [tab, setTab] = useState(0) (์ƒ๋žต) } ํƒญ ui์˜ ์ƒํƒœ๋Š” 0๋ฒˆ ๋‚ด์šฉ์ด ๋ณด์ด๊ฑฐ๋‚˜/ 1๋ฒˆ๋‚ด์šฉ์ด ๋ณด์ด๊ฑฐ๋‚˜/ 2๋ฒˆ๋‚ด์šฉ์ด ๋ณด์ด๊ฑฐ๋‚˜ ์…‹์ค‘ํ•˜๋‚˜์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ๋•Œ๊ทธ๋•Œ๋งˆ๋‹ค setTab()์œผ๋กœ state๋ฅผ ๋ณ€๊ฒฝํ•ด์ฃผ๋ฉด ๋ ๋“ฏ ๋งˆ์ง€๋ง‰์œผ๋กœ, state์— ๋”ฐ๋ผ์„œ ui๊ฐ€ ์–ด๋–ป๊ฒŒ ๋‹ฌ๋ผ ๋ณด์ผ์ง€ ์ž‘์„ฑ function D..
ยท React
3๊ฐ€์ง€ ๋ฌธ์ œ๋ฅผ ํ’€์–ด๋ณด์•˜๋‹ค. ์‘์šฉ1, ๋ฒ„ํŠผ 2๋ฒˆ ๋ˆ„๋ฅด๋ฉด 7,8,9 ์ƒํ’ˆ ๊ฐ€์ ธ์™€์„œ ๋ณด์—ฌ์ฃผ๋ ค๋ฉด? - count ๋ผ๋Š” state๋ฅผ ์‚ฌ์šฉํ–ˆ๋‹ค. - axios.get ์š”์ฒญ ํ•˜๋Š” ๋ถ€๋ถ„์ด ๊ธธ์–ด์„œ getMoreShoes ๋ผ๋Š” ํ•จ์ˆ˜๋ฅผ ์œ„์— ์„ ์–ธํ•˜์—ฌ ๊ฐ€์ ธ๋‹ค ์ผ๋‹ค. ํ•จ์ˆ˜๋ฅผ ์„ ์–ธํ•˜๋Š” ์œ„์น˜๊ฐ€ ์ค‘์š”ํ•˜๋‹ค๊ณ  ๋Š๋‚€๋‹ค. ์•„๋ž˜์— app ์•„๋ž˜์—์„œ ์„ ์–ธํ•˜์˜€๋”๋‹ˆ ๊ฐ์ข… state๋“ค์ด undefined ๋กœ ์—๋Ÿฌ๊ฐ€ ๋–ด๋‹ค. ์‘์šฉ2. ๋ฒ„ํŠผ์„ 3๋ฒˆ ๋ˆ„๋ฅด๋ฉด ๋” ์ƒํ’ˆ์ด ์—†๋‹ค๊ณ  ์•ˆ๋‚ด๋ฌธ์„ ๋„์šฐ๋ ค๋ฉด? let [count, setCount] = useState(0); ํ•ด์ฃผ๊ณ  ํด๋ฆญ์ด๋ฒคํŠธ ๋ฐœ์ƒ์‹œ setCount ํ•˜๋‚˜์”ฉ ์ฆ๊ฐ€ํ•ด์ฃผ๊ณ  count๊ฐ€ 1์ผ๋•Œ data2, count 2์ผ๋•Œ data3, count 3์ผ๋•Œ alert์ฐฝ ๋„์›Œ์คŒ ์‘์šฉ3, ๋ฒ„ํŠผ ๋ˆ„๋ฅธ ์งํ›„์— ๋กœ๋”ฉ์ค‘ ๊ธ€์ž๋ฅผ ..
becky(์ง€์€)
'์ฝ”๋”ฉ์• ํ”Œ' ํƒœ๊ทธ์˜ ๊ธ€ ๋ชฉ๋ก