Il existe une application qui utilise reaux, redux, react-redux, redux-thunk.react-redux redux-thunk: problème de performance de répartition
react: "16.0.0-alpha.6"
redux: "3.6.0"
react-redux: "5.0.2"
redux-thunk: "2.1.0"
Concept:
: Reducers
import { createStore, applyMiddleware } from 'redux';
import thunkMiddleware from 'redux-thunk';
export const MESSAGES_ADD_MESSAGE = 'MESSAGES_ADD_MESSAGE';
export const CONTACTS_ADD_CONTACT = 'CONTACTS_ADD_CONTACT';
export default function messages(state = { messages: [] }, action) {
switch (action.type) {
case MESSAGES_ADD_MESSAGE:
return { messages: [ ...state.messages, action.message ] };
default:
return state;
}
}
export default function contacts(state = { contacts: [] }, action) {
switch (action.type) {
case CONTACTS_ADD_CONTACT:
return { contacts: [ ...state.contacts, action.contact ] };
default:
return state;
}
}
const rootReducer = combineReducers({
contacts,
messages
});
magasin:
const createStoreWithMiddleware = applyMiddleware(
thunkMiddleware
)(createStore);
const store = createStoreWithMiddleware(rootReducer);
Actions créateurs:
export function addMessage(message) {
return {
type: MESSAGES_ADD_MESSAGE,
message
};
}
export function addContact(contact) {
return {
type: CONTACTS_ADD_CONTACT,
contact
};
}
Pourquoi l'heure d'envoi (addContact ('Viktor +123456789')) augmente selon le nombre de messages en magasin? Comme je comprends à l'heure de la construction de nouveau magasin, le réducteur de messages renvoie la référence d'état sans créer une nouvelle copie de cette partie du magasin.
J'ai un cas réel plus compliqué mais le concept de problème est similaire.
Ok, mais dans ce cas, le cas par défaut de l'opérateur de commutateur dans le réducteur pour quoi? –
Nous ne sommes pas en mutation l'état dans le cas par défaut, il est donc sûr de retourner la référence. – Akhil
Ok, si l'état des messages ne mute pas pendant "dispatch (addContact ('Viktor +123456789'))", pourquoi le temps de cette action augmente selon le nombre de messages en magasin? –