-
글쓴이글
-
2022년 1월 17일 19:41 #25003
사과나무참가자// let copy = [...state]
// copy.push(액션.payload)
// return copy이부분 주석없애고 원래대로하면 1개씩 상품 id를이용해 장바구니에 추가가되는데
같은 물건일경우 +1만 하고싶을때
function reducer(state = 초기값, 액션){ //es6 신문법, 기본파라미터 문법 데이터 초기값을 그냥 넣는다.
if(액션.type ==='항목추가'){let copy = [...state]
copy.push(액션.데이터)
return copy
//state안에 id : 액션.데이터 인게 있는지
// let found = state.findIndex((a)=>{ return a.id === 액션.데이터.id })//array안에서 원하는 데이터 찾아주는 함수, find도됨
// if(found >=0){// let copy = [...state]
// copy[found].quan++
// return copy// }else{
// let copy = [...state]
// copy.push(액션.데이터)
// return copy
// }
}이와같이쓰면 history.push가 제대로 작동안하거나, 빈페이지만 나오는데 설명란에 코드랑 비교해도... 잘안되서요!
확인부탁드려요
=============================코드 전체===========================
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';
import { computeHeadingLevel } from '@testing-library/react';let alert초기값 = true
function reducer2(state = alert초기값, 액션){
if(액션.type==='닫기'){
state = false
return state
}else{
return state
}
}
let 초기값= [{id : 0, name : '멋진신발', quan : 2},
{id : 1, name : '멋진신발2', quan : 3},
{id : 2, name : '멋진신발3', quan : 5},
]function reducer(state = 초기값, 액션){ //es6 신문법, 기본파라미터 문법 데이터 초기값을 그냥 넣는다.
if(액션.type ==='항목추가'){// state안에 id:액션.데이터 인게 있냐?
let 몇번째있니 = state.findIndex( (a)=>{ return a.id === 액션.데이터.id });
if ( 몇번째있니 >= 0 ){
let copy = [...state];
copy[몇번째있니].quan++
} else {
let copy = [...state];
copy.push(액션.데이터)
return copy
}
// let copy = [...state]
// copy.push(액션.payload)
// return copy}else if(액션.type === '수량증가'){
let copy = [...state]
copy[액션.데이터].quan++
return copy}else if(액션.type === '수량감소'){
let copy = [...state]
if(copy[액션.데이터].quan === 0){
return copy
}else{
copy[액션.데이터].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')
);reportWebVitals();
-
글쓴이글
- 답변은 로그인 후 가능합니다.