-
React Redux에서 connect와 bindActionCreators 사용하기React 2022. 11. 27. 00:08
- React에서 Hook을 사용하지 않고 Redux를 사용하는 방법을 알아봤다.
- react-redux의 connect 메서드를 통해서 전역 상태와 dispatch를 props로 전달할 수 있다.
- 추가적으로 bindActionCreators를 사용하여 자동으로 액션 함수를 dispatch로 감싸줄 수 있다.
- bindActionCreators는 필수적으로 사용할 필요는 없지만, 코드를 간단하게 만들어준다.
- connect로 연결한 상태와 dispatch 함수는 props를 통해 받아와 사용할 수 있다.
import { bindActionCreators } from "redux"; import { connect } from "react-redux"; import { addOrderAction } from "../actions/ordersAction"; import DispatchTest from "./DispatchTest"; function ReduxTest({ orders, addOrderAction }) { return ( <div> <h3>{JSON.stringify(orders)}</h3> <DispatchTest onAction={addOrderAction} /> </div> ); } const mapStateToProps = (state) => ({ orders: state.ordersReducer.orders, }); const mapDispatchToProps = (dispatch) => ({ onAddOrderAction: (data) => dispatch(addOrderAction(data)), }); export default connect(mapStateToProps, mapDispatchToProps)(ReduxTest);addOrderAction- bindActionCreators를 사용하면, mapDispatchToProps를 다음과 같이 작성할 수 있다.
- 자동으로 action 함수 바깥에 dispatch를 감싸주어 그대로 사용할 수 있게 해준다.
- action 함수는 action 객체를 반환하는데 이 action 함수를 인자로 갖는 dispatch 함수를 반환하는 함수이기에 결과적으로 bindActionCreators로 만들어진 함수에 데이터 인자만 전달하면 해당 action의 dispatch가 실행된다.
const mapDispatchToProps = (dispatch) => bindActionCreators({ addOrderAction }, dispatch);React-Redux docs : https://react-redux.js.org/api/connect
Connect | React Redux
API > connect: a Higher-Order Component to interact with Redux
react-redux.js.org
'React' 카테고리의 다른 글
간단하게 Jest, React Testing Library 사용하기 (0) 2022.11.29 React 컴포넌트 props.children에 대해서 알아보기 (0) 2022.11.27 timer 만들기 (in React) (0) 2022.11.25 React Query에서 Post, Delete, Patch/Put (useMutation hook 사용하기) (1) 2022.11.23 useCallback과 useMemo 사용하기 (0) 2022.11.22