Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 | import { useReducer } from 'react';
// 인수에 따라 0~init 사이의 값을 생성한다.
function initCounter(init) {
console.log('initCounter is called!!');
return {
count: Math.floor(Math.random() * (init + 1))
};
}
export default function HookReducerInit({ init }) {
const [state, dispatch] = useReducer(
(state, action) => {
switch (action.type) {
case 'update':
return { count: state.count + 1 };
default:
return state;
}
},
initCounter(init)
);
const handleClick = () => {
dispatch({ type: 'update' });
};
return (
<>
<button onClick={handleClick}>카운트</button>
<p>{state.count}번 클릭되었습니다.</p>
</>
);
}
// import { useReducer } from 'react';
// // 인수에 따라 0~init 사이의 값을 생성한다.
// function initCounter(init) {
// console.log('initCounter is called!!');
// return {
// count: Math.floor(Math.random() * (init + 1))
// };
// }
// export default function HookReducerInit({ init }) {
// const [state, dispatch] = useReducer(
// (state, action) => {
// switch (action.type) {
// case 'update':
// return { count: state.count + 1 };
// default:
// return state;
// }
// },
// init,
// initCounter
// );
// const handleClick = () => {
// dispatch({ type: 'update' });
// };
// return (
// <>
// <button onClick={handleClick}>카운트</button>
// <p>{state.count}번 클릭되었습니다.</p>
// </>
// );
// } |