이전엔 익숙한 onChange나, onClick, onkeydown 등 이벤트를 활용을 해봤지만, 생소한 onBlur와 onFocus를 정리해 두려고 한다.
나는 위의 이벤트를 유효성 검사에서 활용하기 위해 사용하였다.
import {useState} from 'react'
const [validEmail, setValidEmail] = useState(false)
const isValidEmail = userInfo.email.includes('@') && userInfo.email.includes('.')
// 이메일 입력
const handleInputValue = (key) => (e) => {
setUserInfo({ ...userInfo, [key]: e.target.value })
}
// 이메일 유효성 검사
const handleOnBlur = () => {
if (!isValidEmail) {
setValidEmail(true)
} else {
setValidEmail(false)
}
}
<Input
type="email"
placeholder="이메일을 입력하세요"
onChange={handleInputValue('email')}
onBlur={handleOnBlur}
ref={emailInput}
borderColor={validEmail}
/>
validEmail라는 state(true, false)값을 두고, 해당 값이 @
, .
을 포함하고 있지 않으면 email로써 판단할 수 없다고 하여 true값으로 바꾼다.
input태그에 onBlur이벤트를 걸어두어 해당 값을 입력후 유효성 검사를 판별하여 validEmail라는 state값을 true로 변화시키도록 만들고 input태그의 테두리를 red로 바꾸었다.