본문 바로가기
웹/(React)리액트

(React) useReducer 사용법 / useReducer와 이벤트 함께 사용하기

by 공부가싫다가도좋아 2021. 8. 24.
반응형

(React) useReducer 사용법


* 이 포스팅은 개인적으로 복습을 위해 정리한 포스팅입니다.

 

useReducer이란?

> useReducer은 useState와 마찬가지로 상태를 변경하기 위해 쓰입니다.

 

useReducer 사용 이유

> useReducer은 다양한 상태를 업데이트해줄 수 있습니다.

> useState보다 코드를 더 깔끔하게 작성할 수 있습니다.

 

useReducer을 이용한 코드

사용된 이벤트

>onClick : 클릭 시 카운트 변수 값 +1을 해줌

>onClick: 클릭 시 카운트 변수 값 -1을 해줌

>onChange: input태그에 글을 쓸 수 있게 해줌

 

<결과 화면>

App.js

import React from 'react';
import ReducerComponent from './ReducerComponent';

const App = () => {
  return <ReducerComponent />;
};

export default App;

 

reducer.js

export const initialState = {
  count: 0,
  value: '',
};

export const indexReducer = (state, action) => {
  switch (action.type) {
    case 'INCREASE': {
      return {
        ...state,
        count: state.count + 1,
      };
    }
    case 'DECREASE': {
      return {
        ...state,
        count: state.count - 1,
      };
    }
    case 'INPUT': {
      return {
        ...state,
        value: state.value,
      };
    }
  }
};

 

ReducerComponent.js

import React, { useReducer } from 'react';
import { initialState, indexReducer } from './reducer';

const ReducerComponent = () => {
  const [state, dispatch] = useReducer(indexReducer, initialState);

  const onChange = (e) => {
    dispatch({
      type: 'INPUT',
      value: e.target.value,
    });
  };

  const increase = () => {
    dispatch({
      type: 'INCREASE',
    });
  };

  const decrease = () => {
    dispatch({
      type: 'DECREASE',
    });
  };

  return (
    <div>
      <input
        type="text"
        placeholder="fill up"
        value={state.text}
        onChange={onChange}
      />
      <h1>{state.count}</h1>
      <button onClick={increase}>+</button>
      <button onClick={decrease}>-</button>
    </div>
  );
};

export default ReducerComponent;
반응형

댓글