ReactHooks (Custom Hooks) 사용하기

2019. 2. 25. 13:15javascript/React.Js


ReactHooks (Custom Hooks)


자기가 커스텀한 hooks을 만들어 함수나 state의 추가 생성없이 간단하게 만들 수 있습니다. 

자신만의 hooks를 만들어 이전에 react의 단점들을 가볍게 보완할 수 있을 것 같습니다. 

ex) datafetch, form input 태그


주의할 점


1. 커스텀 hook의 이름은 use를 꼭 붙여주자!!

자동적으로 규칙이 맞는지 확인하지 못합니다. 특정 함수에 hook이 호출되는지 알 수 없습니다.


2. 각 input별로 같은 함수를 이용하지만 같은 state를 공유하는 것이 아닙니다.

hook은 state적인 특성을 갖고있어서 공유하지 않습니다. 완전히 독립적입니다.

 



예제 코드


import React, { useState, useEffect } from "react";

const useInputTag = defaultValue => {
const [value, setValue] = useState(defaultValue);

const onChange = e => {
const {
target: { value }
} = e;
setValue(value);
};

return { value, onChange };
};

const App = () => {
return (
<div>
<input {...useInputTag} type="password" />
<input {...useInputTag} type="email" />
<input {...useInputTag} type="name" />
</div>
);
};

export default App;


커스텀 훅스를 만들어 주어서 각 input마다 다른 함수들과 state를 안만들어 주어도 됩니다. 그리고 그 함수의 반환값을 value와 onChange를 사용하여 바로 input에 넣어주면 되는 편리함도 있습니다. 


만약 기존의 react였다면

import React, { useState, useEffect } from "react";

const useInputTag = defaultValue => {
const [value, setValue] = useState(defaultValue);

const onChange = e => {
const {
target: { value }
} = e;
setValue(value);
};

return { value, onChange };
};

const App = () => {
const [name, setName] = useState("");
return (
<div>
<input value={name} onChange={e => setName(e.target.value)} />
<input {...useInputTag} type="password" />
<input {...useInputTag} type="email" />
<input {...useInputTag} type="name" />
</div>
);
};

export default App;


첫 코드에서 새로운 input을 추가했습니다.

 input마다 state, onChange함수를 바꾸어 주기에는 귀찮은 감이 있습니다. 하지만 hook을 사용하면 말끔하게 사용할 수 있습니다. 


Customhooks를 만들어 얼마나 더 편하게 코딩을 할 수 있는지 알게 되었습니다.



'javascript > React.Js' 카테고리의 다른 글

React hooks(UseEffect) 사용하기  (0) 2019.02.25
React hooks(UseState) 사용하기  (0) 2019.02.25
React-Component 만들기  (0) 2018.11.19
prop-types 사용하기  (0) 2018.11.19
[React.js] React.js 7편 LifleCycle2  (0) 2018.06.27