这是我的减速机代码,请让我知道减速机应该是正确的格式吗?
我是Redux的新手,请帮我解决这个问题。我已经阅读了文档,但我没有得到相关的背景,如果我错了请告诉我我错在哪里
以下是我的减速机代码。
export default createReducer(initialState, {
[SELECT_ENTITY]: (state, data) => {
let selectedEntity;
if (data.isSection) {
// Assert the section exists
selectedEntity = state.sections.filter(section => section.id === data.entityId)[0];
} else {
const lectures = state.sections.reduce((acc, section) => {
return (acc.concat(section.lectures));
},[]);
selectedEntity = lectures.filter(lecture => lecture.id === data.entityId)[0];
}
let newState;
let propertyWindowIsActive;
if (state.propertyWindowIsActive) {
if(state.entity.id === data.entityId && state.isSection === data.isSection) {
// propertyWindowIsActive = false;
newState = Object.assign({}, state, {propertyWindowIsActive: false, entity:{}, isSection: null});
} else {
// propertyWindowIsActive = true;
newState = Object.assign({}, state, {entity: selectedEntity, isSection: data.isSection});
}
} else {
// propertyWindowIsActive = true;
newState = Object.assign({}, state, {propertyWindowIsActive: true, entity: selectedEntity, isSection: data.isSection});
}
return (newState);
}
}
答案 0 :(得分:2)
发布问题时请仔细格式化您的代码。即使将代码复制并粘贴到文本编辑器中并修复对齐后,它似乎也不是有效的JavaScript。
由于你是Redux的新用户,我建议你避免使用像“createReducer”这样的包装器。只需将您的reducer编写为纯函数。它们应始终具有两个参数state
和action
并返回新状态。您的reducer应该有一个基于action.type
的开关语句。
请阅读有关Reducer的Redux文档。 http://redux.js.org/docs/basics/Reducers.html