기존 코드
import React, {useReducer} from 'react'
function reducer(state, action) {
return {
...state,
[action.name]: action.value
}
}
export default function Info() {
const [state, dispatch] = useReducer(reducer, {
name: '',
nickname: '',
})
const {name, nickname} = state;
function onChange(e) {
dispatch(e.target);
}
return (
<>
<div>
<input name='name' value={name} onChange={onChange} />
<input name='nickname' value={nickname} onChange={onChange} />
</div>
<div>
<div>
<b>이름: </b>{name}
</div>
<div>
<b>닉네임: </b>{nickname}
</div>
</div>
</>
)
}
import React, { useReducer } from 'react'
function reducer(state, action) {
return {
...state,
[action.name]: action.value,
}
}
export default function useInputs(initialForm) {
const [state, dispatch] = useReducer(reducer, initialForm);
function onChange(e) {
dispatch(e.target);
}
return [state, onChange];
}
Info.js
import useInputs from "./useInputs";
export default function Info() {
const [state, onChange] = useInputs({
name: '',
nickname: '',
})
const [name, nickname] = state;
return (
<>
<div>
<input name='name' value={name} onChange={onChange} />
<input name='nickname' value={nickname} onChange={onChange} />
</div>
<div>
<div>
<b>이름: </b>{name}
</div>
<div>
<b>닉네임: </b>{nickname}
</div>
</div>
</>
)
}