-
글쓴이글
-
2021년 12월 10일 01:04 #21673
코딩초보참가자
장바구니 만들기에서 index.js에서 let copy = [...state]를 한 이후 console.log(copy)를 할 때 저렇게 나옵니다.
copy[액션.데이터].quan++를 할 시에 a.id가 1이면 디스패치한 후 copy[액션.데이터] = copy[copy에서 id가 1인것] = copy에 id가 1인 quan ++를 해야하는데 숫자 : {~값~} 에서 앞자리 숫자가 1인 {id: 4, name : '에쁜신발} 의 quan를 ++를 하는 오류가 있습니다. 항목추가는 반복하면 제대로 quan이 증가하는데 수량증가랑 감소는 무엇이 문제일까여?2021년 12월 10일 02:28 #21680
코딩초보참가자index.js 코드
import React from 'react';
import ReactDOM from 'react-dom';
import './index.css';
import App from './App';
import reportWebVitals from './reportWebVitals';
import { BrowserRouter } from 'react-router-dom';
import { Provider } from 'react-redux';
import { combineReducers, createStore } from 'redux';let alert초기값 = true;
function reducer2(state = alert초기값, 액션) {
if (액션.type === 'alert닫기') {
return state = false;
}
else
return state
}let 기본state = [
{ id: 3, name: '멋진신발', quan: 2 },
{ id: 4, name: '예쁜신발', quan: 5 },
{ id: 5, name: '귀여운신발', quan: 1 }]function reducer(state = 기본state, 액션) {
//console.log(액션.num)
if (액션.type === '항목추가') {let found = state.findIndex((a) => { return a.id === 액션.data.id });
//console.log(found)
if (found >= 0) {
let copy = [...state];copy[found].quan++;
return copy;
} else {
let copy = [...state];
copy.push(액션.data)
return copy}
}
else if (액션.type === '수량증가') {
let copy = [...state];
//console.log([...state])
//console.log([...copy])
copy[액션.num].quan++;
return copy
} else if (액션.type === '수량감소') {
let copy = [...state];
if (!(copy[액션.num].quan === 0)) {copy[액션.num].quan--;
return copy
}}
else
return state;}
let store = createStore(combineReducers({ reducer, reducer2 }));
ReactDOM.render(
<React.StrictMode>
<BrowserRouter>
<Provider store={store}>
<App />
</Provider>
</BrowserRouter>
</React.StrictMode>,
document.getElementById('root')
);// If you want to start measuring performance in your app, pass a function
// to log results (for example: reportWebVitals(console.log))
// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals
reportWebVitals();제가 볼때는 수량증가 코드부분의 let copy = [...state]; 할때 state의 중괄호가 안없어져서 이러는거 같은데 해결법을 모르겠네요
항목추가 부분은 제대로 작동이 되면서 console.log(copy) 찍으면 아무것도 안나옵니다2021년 12월 10일 10:11 #21692
codingapple키 마스터수량증가 dispatch 날릴 때
대충 1 넣어서 보내면 1번째 항목을 ++ 해주세요 라고 코드짜서 그런것이 아닐까요
dispatch할 때 상품의 id를 보내서
보낸 id와 일치하는 id를 가지고 있는 상품을 ++ 해달라고 하면 정확하겠군요
2021년 12월 10일 10:52 #21694
코딩초보참가자정확히 카트 디스패치로 a.id 를 보냈는데도 안됩니다. 같은 함수안에 있는 항목추가는 정상적으로 작동하는데 수량증가 부분은 작동이 안됩니다. a.id가 2이고 num에 실어 보내면 copy[액션.num] .quan++= copy[2].quan++ = copy에서 id가 2인 quan++를 해야하는데 {}괄호 앞에 있는 숫자의 quan을 ++ 하네요
2021년 12월 10일 12:20 #21703
코딩초보참가자기존의 방식
해결 방식
뻘짓이후에 수량증가에 findIndex를 추가해서 위같은 오류를 해결하였는데 기존강의에서 findIndex를 추가안해도 정상작동 되었던 이유가 무엇인가요?
2021년 12월 10일 14:27 #21708
codingapple키 마스터네 보낸 id를 바탕으로 같은 id 가진 상품을 찾아서 ++ 해주면 정확합니다
그건 아마 순서대로 상품이 잘 있었나보군요
-
글쓴이글
- 답변은 로그인 후 가능합니다.