Redux(2)

작업
React
Redux
dispatch
reducer
진행 상태
완료
진행일시
2022/04/15
학습자

[ 1. Redux로 수정할려면 ?? ]

1. Redux로 데이터를 수정할려면 어떻게해야할까?

1. Reducer 함수를 이용하자! 2. Reducer함수를 이용해 state 함수를 뱉는다. 3.dispatch함수를 이용!! 4. 액션 type을 이용하자

2. 코드 샘플

/* index. js*/ // 1. 초기값 설정 let 초기값 = [ { id : 1, name : '하이', quan : 0 }, { id : 2, name : '바이', quan : 1 }]; // 2. Reducer함수를 이용하자 function reducer(state = 기본값, 액션) { if(액션.type === '수량증가') { let copy = [...초기값]; copy.quan++; return copy ; } else { return state; } } let store = createStore(combineReducers({reducer, reducer2})); =================================================================================== /* Cart.js */ function Cart(props) { return( <div> <div> <Table responsive="sm"> <thead> <tr> <th>#</th> <th>상품명</th> <th>수량</th> <th>변경</th> </tr> </thead> <tbody> { // ㅁ 데이터 수정 요청을 할땐 props.dispatch({ type : ??? }) // 위에보다 업그레이드해서 dispatch()로 수정요청할 때 데이터를 보낼 수도 있음 = dispatch({type:어쩌구, payload : 보낼데이터}) props.state.map(function(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></td> <td><button onClick={() => { props.dispatch({ type : '수량감소' }) }}>-</button></td> </tr> ) }) } </tbody> </Table> { props.alert열렸니 === true ? <div className='my-alert2'> <p>지금 구매하시면 신규할인 20%</p> <button onClick={() => { props.dispatch({ type : '닫기' }) }}>닫기</button> </div> : null } </div> </div> } /* redux를 쓰기위한 셋팅 1. 컴포넌트에서 state를 쓰려면 function을 만들자 2. export default connect()() -> ex) export default connet(함수명)(Cart) */ //- redux store 데이터 가져와서 props 변환해주는 함수 function state를props화(state) { return { state : state.reducer; } } export defalut connect(state를props화)(Cart)
JavaScript
복사