我很困惑,因为我在这里不返回状态,只有action.payload(代码片段):这个减速器是否符合Redux规则?
case HISTORY_SELECTED:
return action.payload;
所有这些减速代码:
import { HISTORY_SELECTED } from '../actions/index';
export default function (state = null, action) {
switch (action.type) {
case HISTORY_SELECTED:
return action.payload;
default:
return state;
}
}
编辑:添加3更多的情况下。
如果我以正确的方式理解答案,那么案例2,案例3和案例4都可以,是吗?
CASE 2(reducer_note_selected.js)
import { NOTE_SELECTED, DEL_NOTE_SUCCESS } from '../actions/actions';
export default function (state = null, action) {
switch (action.type) {
case NOTE_SELECTED:
return action.payload;
case DEL_NOTE_SUCCESS:
return null;
default:
return state;
}
}
CASE 3(reducer_notes_status_fetch.js - 我在这里只返回字符串)
import {
FETCH_ALL_NOTES_STARTED,
FETCH_ALL_NOTES_ERROR,
FETCH_ALL_NOTES_SUCCESS
} from '../actions/actions';
export default function (state = {}, action) {
switch (action.type) {
case FETCH_ALL_NOTES_STARTED:
return 'fetching_started';
case FETCH_ALL_NOTES_ERROR:
return 'error';
case FETCH_ALL_NOTES_SUCCESS:
return 'fetch_all_notes_success';
default:
return state;
}
}
CASE 4(reducer_notes_general .js)
import _ from 'lodash';
import { FETCH_ALL_NOTES_SUCCESS, DEL_NOTE_SUCCESS } from '../actions/actions';
export default function (state = {}, action) {
switch (action.type) {
case FETCH_ALL_NOTES_SUCCESS:
return _.mapKeys(action.payload.data, '_id');
case DEL_NOTE_SUCCESS:
return _.omit(state, action.payload);
default:
return state;
}
}
是的,但“下一个状态”可以简单地是来自操作的数据。 – markerikson
所以我可以像我一样做吗?或者它又是规则?我非常困惑我到底能在减速器中返回什么。 –
是的,你可以,根据我的答案。减速器返回的“新状态”可以基于旧状态,基于行动的数据,甚至可以从头开始计算。 – markerikson