src / composants / réducteurs / index.js
import {combineReducers} from 'redux';
const tasksReducer =(state=[] , action)=>{
switch(action.type){
case 'ADD_TASK':
state=state.concat(action.payload);
break;
case 'DELETE_TASK':
state=state.slice();
state.splice(action.payload,1);
break;
}
return state;
},
reducers=combineReducers({
tasks:tasksReducer
});
export default reducers;
3 Réponses :
Vous ne devez pas directement muté directement l'état code>. Je n'ai pas essayé tout votre code import {combineReducers} from 'redux';
const tasksReducer =(state=[] , action)=>{
switch(action.type){
case 'ADD_TASK':
let tempArr = [...state];
let arr = tempArr.concat(action.payload); //action.payload is an array
return [...arr];
break;
case 'DELETE_TASK':
let tempArr= [...state];
tempArr.splice(action.payload,1);//action.payload is index
return [...tempArr];
break;
default:
return state;
}
};
export default combineReducers({
tasks:tasksReducer
});
src / index.js
Voici comment j'ai importé. P>
import React from 'react';
import ReactDOM from 'react-dom';
import App from './App';
//import * as serviceWorker from './serviceWorker';
import {Provider} from 'react-redux';
import {createStore} from 'redux';
import reducers from "./reducers/index";
let store=createStore(reducers);
ReactDOM.render(
<Provider store={store}>
<App />
</Provider>
,
document.getElementById('root'));
Lors de l'utilisation de Combinantducers () dans votre MapSTeTétoprops, vous devez spécifier le nom de réducteur les données que vous souhaitez venir. Donc, votre fonction MapSTeTétoProps doit ressembler à:
p>
const mapStateToProps = state =>{
return {
PIECE_OF_STATE: state.tasks.PIECE_OF_STATE
}
}
Le code a l'air bien. Votre réducteur est-il correctement injecté lors de la création de votre magasin?