react
[react] useInput
beaksul
2022. 12. 9. 20:12
초기값 지정, 유효성 검사
useInput은 입력값과 유효성 검사 조건을 매개변수로 받고 value와 onChange를 반환한다.
value는 해당 input의 value가 된다.
사용자가 입력한 값을 willUpdate를 이용해 유효성 검사 후 결과를 담아주고
유효성 검사 조건에 맞으면 true를 반환 setValue를 이용해서 value로 받는다.
import "./styles.css";
import { useState } from "react";
import React from "react";
function App() {
const useInput = (initialValue, validator) => {
const [value, setValue] = useState(initialValue);
const onChange = (e) => {
const {
target: { value }
} = e;
// const value = e.target.value; 와 같음
let willUpdate = true;
if (typeof validator == "function") {
willUpdate = validator(value);
}
if (willUpdate) {
setValue(value);
}
};
return { value, onChange };
};
const maxLen = (value) => value.length <= 10;
// 유효성 검사 조건
const name = useInput("Mr.", maxLen);
return (
<div className="App">
<h1>Hello!!</h1>
<input placeholder="name" {...name}></input>
{/* {...name} 는 value = {name.value} 와 같다 */}
</div>
);
}
export default App;