Ответ 1
Если state.loginReducer.login
изменится, тогда будет срабатывать componentWillReceiveProps
. Если вы считаете, что ваш редуктор возвращает новое состояние, а componentWillReceiveProps
не запускается, убедитесь, что новое состояние является неизменным. Возврат той же справки состояния, которая передается редуктору, не будет работать.
Из http://rackt.org/redux/docs/Troubleshooting.html:
Это неправильно:
function todos(state = [], action) {
switch (action.type) {
case 'ADD_TODO':
// Wrong! This mutates state
state.push({
text: action.text,
completed: false
});
case 'COMPLETE_TODO':
// Wrong! This mutates state[action.index].
state[action.index].completed = true;
}
return state;
}
Это правильно:
function todos(state = [], action) {
switch (action.type) {
case 'ADD_TODO':
// Return a new array
return [...state, {
text: action.text,
completed: false
}];
case 'COMPLETE_TODO':
// Return a new array
return [
...state.slice(0, action.index),
// Copy the object before mutating
Object.assign({}, state[action.index], {
completed: true
}),
...state.slice(action.index + 1)
];
default:
return state;
}
}