twitter 클론 코딩을 하면서 hooks에 대해 더 공부해야할 필요성을 느껴 따로 찾아보게 되었다..!
직접 hooks를 만들면서 공부해보자 ! !
CodeSandBox
를 이용할 것. -> CodeSandBox는 SandBox를 만들 수 있는 좋은 웹사이트. Vsc나 server등 모든 것이 준비된 환경을 갖춤. useState
은 array를 리턴함. 이 array의 요소는 value와 value를 변경하는 함수. -> 즉 useState이 리액트 state의 매니지먼트 밑으로 들어가서 훅을 당기는 것. 따라서 class component에서 일일히 설정하지 않아도 됨. example code
const App=()=>{
const [count, setCount]=useState(0);
return(
<>
{count}
<button onClick={()=>setCount(count+1)}>
Increasement
</button>
</>
)
}
export default App;
useEffect
는 component did mount, did update과 비슷함. 이는 주로 API에서 데이터를 요구할 때 사용. 기본적으로 input을 업데이트하는 useInput hook를 만들어보자 !
useInput
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("hi ", maxLen);
return (
<div className="App">
<h1> Hello </h1>
<input placeholder="Name" {...name} />
</div>
);
};
maxLen
이고 이 결과 true나 false가 될 것. 다음 시간에는 useTabs를 비롯한 여러가지 hooks를 몇가지 더 만들어보겠습니다!