728x90
반응형
useInput
useInput은 기본적으로 input을 업데이트함
useInput 사용 예시
import React, { useState } from "react";
import ReactDOM from "react-dom";
const useInput = initialValue => {
const [value, setValue] = useState(initialValue);
const onChange = event => {
const {
target: { value }
} = event;
setValue(value);
};
return { value, onChange };
};
const App = () => {
const name = useInput("Mr.");
return (
<div className="App">
<h1>Hello</h1>
<input placeholder="Name" value={name.value} onChange={name.onChange} />
<input placeholder="Name" {...name} />
</div>
);
};
const rootElement = document.getElementById("root");
ReactDOM.render(<App />, rootElement);
여기서 <input placeholder="Name" value={name.value} onChange={name.onChange} /> 이 코드와
<input placeholder="Name" {...name} /> 이 코드는 똑같이 동작함
useInput에 유효성 검증 추가하기
유효성 검증 기능을 추가해보기
useInput 유효성 검증 예시
import React, { useState } from "react";
import ReactDOM from "react-dom";
const useInput = (initialValue, validator) => {
const [value, setValue] = useState(initialValue);
const onChange = event => {
const {
target: { value }
} = event;
let willUpdate = true;
if(typeof validator === "function"){
willUpdate = validator(value);
}
if(willUpdate) {
setValue(value);
}
};
return { value, onChange };
};
const App = () => {
const maxLen = (value) => value.length <= 10;
const name = useInput("Mr.", maxLen);
return (
<div className="App">
<h1>Hello</h1>
<input placeholder="Name" {...name} />
</div>
);
};
const rootElement = document.getElementById("root");
ReactDOM render(<App />, rootElement);
최대 10글자를 넘어가면 더이상 작성 X
반응형
'프로그래밍 > React' 카테고리의 다른 글
[React] useEffect (0) | 2023.01.27 |
---|---|
[React] React Hooks (3) - useTabs (0) | 2023.01.26 |
[React] React Hooks (1) - useState (0) | 2023.01.20 |
[React] Hooks란? (0) | 2023.01.19 |
[React] State 끌어올리기 - 리액트 자습서6 (0) | 2022.11.18 |