#10. React ๋งํฌ์๋น์ค ๋ฑ๋ก ๋ฐ ํธ์ง ํ๋ฉด ๊ฐ๋ฐ(๋ฑ๋กํ๋ฉด ๋์์ธ)
๋ฑ๋ก ๋ฐ ํธ์งํ๋ฉด ๋์์ธ์ด ๋์์ผ๋, ์ด์ ์ ๋ ฅ ๊ธฐ๋ฅ์ ๋ง๋ค์ด ๋ณด์.
Reactํ๋ฉด์์ ๊ฐ ํญ๋ชฉ์ Input Value์ ๊ฐ์ ธ์ค๊ธฐ
โ links.create.jsx ( ์์น: linkservice/client/src/component/links.create.jsx)
---------------------------------------------------------------------------------------------------
Input value๊ฐ์ ๊ฐ์ ธ์ค๋ ๋ฐฉ์์ ์๋ ์์๋๋ก ์ฒ๋ฆฌ ํ์๋ฉด ๋๋ค.
1) input์์ value์ ๋ด๊ธฐ ์ํด์ state์ ์์ฑ( jsonํํ๋ก ๋ฐ๊ธฐ์ํด์ ์ ์ธ)
const [values, setValues] = useState({})
2) input์์ ๊ฐ์ ์ ๋ ฅํ ๋ value state๊ฐ์ ๋ณ๊ฒฝํด์ฃผ๋ onChange handleํจ์๋ฅผ ์์ฑํ๋ค.
const handleChange = (e) => {
const { name, value } = e.target
setValues((prevValues) => ({
...prevValues,
[name]: value,
}))
}
์ ์ฝ๋๋ input type=”text”์ ์ ๋ ฅํ๋ ์ด๋ฒคํธ๊ฐ ๋ฐ์์ ํด๋น input์ name๊ณผ value์ ๊ฐ์ ธ์ ๊ธฐ์กด state์ ์๋ก์ด state์ ์ถ๊ฐํ๋ ํธ๋ค ํจ์์ด๋ค.
3) submit ํธ๋ค ํจ์๋ฅผ ํตํด values์ validation์ฒดํฌ์ API ํธ์ถํ์ฌ ์๋น์ค์ ์ ๋ฌํ๊ณ ,
useRef์ ํตํด Input์ focus ์ฃผ๊ธฐ
useRef์ ์ธ
import React, { useState, useRef } from "react"
const ์ ์ธ
const inputFocus = useRef(null)
handleSubmit์ validation ์ฒดํฌ ์ current focus()์ ์ถ๊ฐํ๋ค.
if (!values.name) {
alert('๋งํฌ๋ช
์ ํ์๊ฐ์
๋๋ค.')
inputFocus.current.focus()
return false
}
4) handleSubmit ํจ์
const handleSubmit = async (e) => {
e.preventDefault();
const formData = new FormData();
if (!values.name) {
alert('๋งํฌ๋ช
์ ํ์๊ฐ์
๋๋ค.')
inputFocus.current.focus()
return false
}
if (!image && !values.imageurl) {
if (!window.confirm('์ด๋ฏธ์ง๊ฐ ์๋ ๋งํฌ์ ๋ณด๋ฅผ ๋ฑ๋กํ๊ฒ ์ต๋๊น?')) {
return false
}
}
// input ํญ๋ชฉ์ values์ db์ ์ ์ฅํ๋ API๋ฅผ ํธ์ถํ๋ค.
linkService.createLink(values).then(
(res) => {
alert(res.data.message)
window.location.reload();
}
)
}
5) ๋ ๋๋ง ๋๋ input์ onChange() ํจ์๋ก handleChange()ํจ์๋ฅผ ํธ์ถํ๋ค.
<input type="text" name="name"
defaultValue=""
className="input-css"
onChange={handleChange}
/>
6) form ํ๊ทธ์ onSubmit ํจ์๋ก handleSubmitํจ์๋ฅผ ํธ์ถํ๋ค.
<form onSubmit={handleSubmit}>
Input Value ์์ ์ ์ด๊ฒ์ผ๋ก ์๋ฃํ ์ ์์ผ๋, ์ถ๊ฐ์ ์ผ๋ก ์ด๋ฏธ์ง๋ฅผ ๋ฏธ๋ฆฌ ๋ณผ ์ ์๋ ๊ธฐ๋ฅ,
์ด๋ฏธ์ง๋ฅผ ์ง์ Drag&Drop ํ๋ ๊ธฐ๋ฅ์ ์ ์ํด๋ณด์.