• 로그인
  • 장바구니에 상품이 없습니다.

home2 게시판 React 게시판 redux관련 state변경이 안되는 문제

redux관련 state변경이 안되는 문제

3 글 보임 - 1 에서 3 까지 (총 3 중에서)
  • 글쓴이
  • #143803

    정법진
    참가자
    안녕하세요.
    현재 쇼핑몰 프로젝트 18번째 강의까지 들었는데요.
    
    store.js 파일에 state를 보관하고 쓰는 것까진 잘 되는데
    변경하는 부분이 안 됩니다.
    
    +버튼을 클릭했을때 state변경함수가 실행되면서
    변경된 내용이 적용되어야 하는데
    아무런 반응이 없습니다.
    (state.user의 데이터가 john kim으로 바뀌어야 하는데 변화가 없습니다.)
    
    redux문법을 이용하여 state데이터를 가져오고
    적용하는 소스는 아래와 같이 작성하였습니다.
    
    ===========================================
    store.js
    ---------------------------------------------------------
    import { configureStore, createSlice } from '@reduxjs/toolkit'
    // user state 생성
    let user = createSlice({
      name : 'user',
      initialState : 'kim',
      reducers : {
        changeName(state){
          return 'john' + state;
        }
      }
    })
    
    // goods state 생성
    let goods = createSlice({
      name : 'goods',
      initialState : [
                        {id : 0, name : 'White and Black', count : 2},
                        {id : 2, name : 'Grey Yordan', count : 1}
                     ]
    })
    
    // user state 등록
    export default configureStore({
      reducer: { 
        user : user.reducer,
        goods : goods.reducer
      }
    })
    // user 변경 state함수 등록 
    export let {changeName} = user.actions;
    ===========================================
    
    
    ===========================================
    Cart.jsx
    ---------------------------------------------------------
    
    import { Table }  from 'react-bootstrap';
    import { useDispatch, useSelector } from 'react-redux';
    import { changeName } from './../store.js';
    function Cart(){
        let state = useSelector( (state) => {return state} )
        // store.js에게 데이터를 요청하는 함수
        let dispatch = useDispatch();
        return(
            <div>
                { state.user }의 장바구니
                <Table>
                    <thead>
                        <tr>
                        <th>#</th>
                        <th>상품명</th>
                        <th>수량</th>
                        <th>변경하기</th>
                        </tr>
                    </thead>
                    <tbody>
                        {
                            state.goods.map( (a, i)=>
                                <tr>
                                    <td>{state.goods[i].id}</td>
                                    <td>{state.goods[i].name}</td>
                                    <td>{state.goods[i].count}</td>
                                    <td>
                                        <button onClick={                                        
                                            ()=>{ dispatch(changeName); }
                                        }>+</button>
                                    </td>
                                </tr>
                            )
                        }
                    </tbody>
                </Table>
             </div>
        )
    }
    export default Cart;
    ===========================================
    
    
    
    
    • 이 게시글은 정법진에 의해 2 주, 3 일 전에 수정됐습니다.
    • 이 게시글은 정법진에 의해 2 주, 3 일 전에 수정됐습니다.
    • 이 게시글은 정법진에 의해 2 주, 3 일 전에 수정됐습니다.
    #143810

    codingapple
    키 마스터
    dispatch(changeName('어쩌구')) 라고 써봅시다
    #143833

    정법진
    참가자
    네. 말씀하신대로 수정하니 잘 되네요.
    
    export와 import는 변수로 처리하는 구조였는데,
    함수를 사용할 때는
    함수의 인자값을 함수로 받아오는 특이한 구조였군요.
    • 이 답변은 정법진에 의해 2 주, 2 일 전에 수정됐습니다.
3 글 보임 - 1 에서 3 까지 (총 3 중에서)
  • 답변은 로그인 후 가능합니다.

About

현재 월 700명 신규수강중입니다.

  (09:00~20:00) 빠른 상담은 카톡 플러스친구 코딩애플 (링크)
  admin@codingapple.com
  이용약관, 개인정보처리방침
ⓒ Codingapple, 강의 예제, 영상 복제 금지
top

© Codingapple, All rights reserved. 슈퍼로켓 에듀케이션 / 서울특별시 강동구 고덕로 19길 30 / 사업자등록번호 : 212-26-14752 온라인 교육학원업 / 통신판매업신고번호 : 제 2017-서울강동-0002 호 / 개인정보관리자 : 박종흠