**redux의 역할 : props전달이 용이, 데이터 수정방법정의
1.react-redux의 provider, redux의 createStore 불러와 주고
reducer함수로 초기값과 액션값 조건을 설정
//index.js
[...]
import { Provider } from "react-redux";
import { createStore } from "redux";
let 초기값 = [
{ id: 0, name: "멋진신발", quan: 2 },
{ id: 1, name: "헤진신발", quan: 5 },
];
function reducer(state = 초기값, 액션) {
if (액션.type === "수량증가") {
let copy = [...state];
copy[0].quan++;
return copy;
} else if (액션.type === "수량감소") {
let copy = [...state];
copy[0].quan--;
return copy;
} else {
//위 조건문에 해당하지 않을경우 초기값
return state;
}
}
let store = createStore(reducer);
ReactDOM.render(
<React.StrictMode>
<BrowserRouter>
<Provider store={store}>
[...]
하위 컴퍼넌트 js 파일에서 connect 설치(react-redux)
props를 인자로 받아오고 dispatch 함수로 함수 type설정
//cart.js
[...]
import { connect } from "react-redux";
function Cart(props) {
return (
<div>
[...]
<tbody>
{*props state화*}
{props.state.map((a, i) => {
return (
<tr key={i}>
<td>{a.id}</td>
<td>{a.name}</td>
<td>{a.quan}</td>
<td>
<button
onClick={() => {
props.dispatch({ type: "수량증가" });
}}
>
+
</button>
<button
onClick={() => {
props.dispatch({ type: "수량감소" });
}}
>
-
</button>
</td>
</tr>
);
})}
</tbody>
</Table>
</div>
);
}
//index.js에서 정의한 state를 props화 시킴
function state를props화(state) {
return {
state: state,
};
}
export default connect(state를props화)(Cart);
// export default Cart;
'프론트엔드관련 책예제실습정리 > CO.APP(react)' 카테고리의 다른 글
redux3 두개 이상의 redux 사용 (0) | 2021.07.04 |
---|---|
redux 사용이유 1 (복잡한 props 사용하지 않아도됌) (0) | 2021.07.01 |
03-tab만들기까지 예제 (0) | 2021.07.01 |
setTimeout 사용시 주의점 (0) | 2021.07.01 |
useEffect 와 componentDidMount 차이 (0) | 2021.07.01 |