userState๋ณด๋ค ๋ ๋ค์ํ ์ปดํฌ๋ํธ ์ํฉ์ ๋ฐ๋ผ ๋ค์ํ ์ํ๋ฅผ ๋ค๋ฅธ ๊ฐ์ผ๋ก ์ ๋ฐ์ดํธ ํด ์ฃผ๊ณ ์ถ์ ๋ ์ฌ์ฉํ๋ Hook
๋ฆฌ๋์๋ ํ์ฌ ์ํ, ๊ทธ๋ฆฌ๊ณ ์ ๋ฐ์ดํธ๋ฅผ ์ํด ํ์ํ ์ ๋ณด๋ฅผ ๋ด์ ์ก์ ๊ฐ์ ์ ๋ฌ๋ฐ์ ์๋ก์ด ์ํ๋ฅผ ๋ฐํํ๋ ํจ์์ด๋ค.(์๋ก์ด ์ํ๋ฅผ ๋ง๋ค ๋๋ ๋ฐ๋์ ๋ถ๋ณ์ฑ์ ์ง์ผ ์ฃผ์ด์ผ ํ๋ค)
์์ ๋ก ์ฌ๋ฌ ์ธํ์ ์ํ๋ฅผ ์ ์ฅํด๋ด ์๋ค!
import React,{useReducer} from 'react';
function reducer(state,action){
retunr{
...state,
[action.name] = action.value
};
}
์ฐ์ ์์ ๊ฐ์ด reducer ํจ์๋ฅผ ์์ฑํฉ๋๋ค.
1. ...state๋ ๊ธฐ์กด์ ์๋ state ๊ฐ๋ค์ ๋ณต์ฌ ์ํค๋๊ฒ๊ณผ ๊ฐ์ต๋๋ค.
2. action ๊ฐ์ฒด๋ฅผ ๋ฐ์์ name์ ๊ฐ๋ฆฌํค๋ ๊ณณ์ value๋ฅผ ๋ฃ์ด์ค๋๋ค
-> useReducer์์์ ์ก์ ์ ๊ทธ ์ด๋ค ๊ฐ๋ ์ฌ์ฉ ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์ ์๋์ ๊ฐ์ด ์ด๋ฒคํธ ๊ฐ์ฒด๊ฐ ๊ฐ์ง๊ณ ์๋
e.target ๊ฐ ์์ฒด๋ฅผ ์ก์ ๊ฐ์ผ๋ก ์ฌ์ฉํฉ๋๋ค.
const Info=()=>{
const [state,dispatch] = useReducer(reducer,{
name:'',
age:0
});
const {name,age}=state;
const onChange = e =>{
dispatch(e.target);
}
return(
<div>
<div>
<input name = "name" value={name} onChange={onChange}></input>
<input name = "age" value={age} onChange={onChange}></input>
</div>
<div>
<b>์ด๋ฆ:{name}</b>
<b>๋์ด:{age}</b>
</div>
</div>
)
}
'๐ WEB > React' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
React LifeCycle (0) | 2021.05.24 |
---|