๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿ“š FrontEnd -Study/Vue3

๋ฆฌ์ŠคํŠธ์—์„œ ๊ฒ€์ƒ‰ํ•œ ํ•ญ๋ชฉ ๋‹ค์‹œ ๋Œ์•„์™€๋„ ๊ทธ๋Œ€๋กœ ์œ ์ง€ํ•˜๊ธฐ ์ฒ˜์Œ์—๋Š” ์ด ๋ถ€๋ถ„์„ ๋†“์น˜๊ณ  ๋‹จ์ˆœํžˆ ๋ชฉ๋ก ๋ฒ„ํŠผ์ด๋‚˜ ์ˆ˜์ • ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด router.back()์œผ๋กœ ๋™์ž‘ํ•˜๊ฒŒ ํ•˜์˜€๋‹ค.๊ทธ๋Ÿฌ๋‹ค๋ณด๋‹ˆ ์ด์ „์— ๋ฆฌ์ŠคํŠธ์—์„œ ๋งŒ์•ฝ 100ํŽ˜์ด์ง€๋ฅผ ๋ณด๊ณ  ์žˆ์œผ๋ฉด ํ•ด๋‹น ๊ธ€ ๋ˆ„๋ฅด๊ณ  ๋‹ค์‹œ ๋Œ์•„์˜ค๋ฉด ๋‹ค์‹œ 1ํŽ˜์ด์ง€๋กœ ๋Œ์•„์˜ค๋Š”๊ฒƒ์ด๋‹ค. ์ด๊ฒŒ ๋ฐ์ดํ„ฐ๊ฐ€ ์ ์  ๋งŽ์•„์ง€๋‹ˆ ๋„ˆ๋ฌด ๋ถˆํŽธํ•˜๋‹ค๋Š” ๊ฒƒ์„ ๊นจ๋‹ฌ์•˜๋‹ค. ๊ทธ๋ž˜์„œ ๋ฆฌ์ŠคํŠธ์—์„œ ์•„์นด์ด๋ธŒ ๋””ํ…Œ์ผ ํŽ˜์ด์ง€์— ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  ๊ฒฝ๋กœ์— route์™€ router๋ฅผ ์‚ฌ์šฉํ•˜์—ฌํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋„˜๊ฒจ์ฃผ๊ณ  ๋ฐ›์•„์„œ ๊ทธ์ „์— ๋ดค๋˜ ํŽ˜์ด์ง€์ˆ˜์™€ ๊ฒ€์ƒ‰์–ด ๋“ฑ์„ ์œ ์ง€ํ•˜์—ฌ ์ด์ „์— ๋ดค๋˜ ๋ฆฌ์ŠคํŠธ์™€ ๋˜‘๊ฐ™๊ฒŒ ๋ถˆ๋Ÿฌ์˜ฌ ์ˆ˜ ์žˆ๊ฒŒ๋” ์ˆ˜์ •ํ•˜์˜€๋‹ค. ์—ฌ๋Ÿฌ ํŽ˜์ด์ง€๋ฅผ ๋งŽ์ด ์ˆ˜์ •ํ•˜์˜€๋Š”๋ฐ ๊ทธ ์ค‘ ํ•˜๋‚˜์˜ ํŽ˜์ด์ง€๋งŒ ์˜ˆ๋ฅผ ๋“ค์–ด ๋ณด๊ฒ ๋‹ค.์šฐ์„  ๊ณต๊ฐœ๊ด€๋ฆฌ ํŽ˜์ด์ง€์—์„œ ๊ผญ ๋„˜๊ฒจ์ค˜์•ผํ•  ๊ฐ’๋“ค์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค.prevPage(ํŽ˜์ด์ง€๊ฒฝ๋กœ)pageNum(.. 2024. 10. 29.
๋ถ€๋ชจ, ์ž์‹ ์ปดํฌ๋„ŒํŠธ v-model ์—ฐ๋™ ๋ถ€๋ชจ ์ปดํฌ๋„ŒํŠธ(formํƒœ๊ทธ)์™€ ์ž์‹ ์ปดํฌ๋„ŒํŠธ(inputํƒœ๊ทธ) ์‚ฌ์ด์— v-model ์—ฐ๋™์„ ํ•˜๊ณ  ์‹ถ์—ˆ๋‹ค.. ์–ด๋–ป๊ฒŒ ํ•ด์•ผํ• ๊นŒ? v-model์˜ ๊ฐœ๋… - v-model์€ template์—์„œ ๊ฐ ์—˜๋ฆฌ๋จผํŠธ๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” data ๊ฐ’์ด๋‹ค. - v-model์€ ๋ถ€๋ชจ - ์ž์‹ ๊ด€๊ณ„๊ฐ€ ์—†๋Š” ์ปดํฌ๋„ŒํŠธ์—์„œ๋Š” ์ž์œ ๋กญ๊ฒŒ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋ถ€๋ชจ-์ž์‹ ๊ฐ„ ๊ด€๊ณ„๊ฐ€ ์žˆ๋Š” ์ปดํฌ๋„ŒํŠธ์—์„œ ์ž์‹ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋ถ€๋ชจ ์ปดํฌ๋„ŒํŠธ์˜ ๊ฐ’์„ ๊ฐ€์ ธ์™€ v-model๋กœ ์‚ฌ์šฉํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™์€ ์—๋Ÿฌ๊ฐ€ ๋‚œ๋‹ค๊ณ  ํ•œ๋‹ค. vue.runtime.esm.js:1888 Error: [vuex] do not mutate vuex store state outside mutation handlers. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ์ž์‹ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋ถ€๋ชจ์˜ ๊ฐ’์„ ํ•ธ๋“ค๋งํ•˜๋ฉด v-model์ด ์•„๋‹Œ :.. 2024. 4. 3.
Vue์—์„œ ๋“œ๋กญ๋‹ค์šด ๋ฉ”๋‰ด ๋ฐ”๊นฅ ํด๋ฆญ์‹œ ๋ฉ”๋‰ด ๋‹ซ๊ธฐ ์™ธ๋ถ€ ์˜์—ญ ์ธ์‹ํ•˜๊ธฐ 1. refs ์†์„ฑ์œผ๋กœ dom ์š”์†Œ ์ ‘๊ทผํ•˜๊ธฐ ์šฐ์„  ์™ธ๋ถ€ ์˜์—ญ ํด๋ฆญ์„ ์ธ์‹ํ•˜๊ธฐ ์œ„ํ•ด์„œ ์š”์†Œ์— ์ง์ ‘ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ฃผ๋Š” refs ์†์„ฑ์„ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค. ref="์ฐธ์กฐ๋ช…" ์œ„์™€ ๊ฐ™์ด ์ ‘๊ทผ ๊ฐ€๋Šฅ 2. eventListener๋กœ ํด๋ฆญ ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์•ž์—์„œ ์ฐธ์กฐํ•  ์š”์†Œ ์ง€์ •ํ–ˆ์œผ๋ฉด, dom์š”์†Œ๊ฐ€ ํด๋ฆญ๋˜์—ˆ๋Š”์ง€๋ฅผ ๊ฐ์ง€ํ•˜๊ธฐ ์œ„ํ•ด eventListener๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค. window.addEventListener('click', this.onClick); dom์— ํด๋ฆญ์ด๋ฒคํŠธ ๋ฐœ์ƒํ–ˆ์œผ๋ฉด onClick ํ•จ์ˆ˜ ์‹คํ–‰ํ•œ๋‹ค. onClick(e){ if(e.target.parentNode !== this.$refs.card){ // ๊ฒฐ๊ณผ์ฐฝ ๋‹ซ๊ธฐ } } {{ dropDown }} {{ item }} dropd.. 2024. 3. 30.
728x90