这是编写Redux减速器的正确方法吗?

时间:2016-02-18 14:03:12

标签: redux

这是我的减速机代码,请让我知道减速机应该是正确的格式吗?

我是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);

}

}

1 个答案:

答案 0 :(得分:2)

发布问题时请仔细格式化您的代码。即使将代码复制并粘贴到文本编辑器中并修复对齐后,它似乎也不是有效的JavaScript。

由于你是Redux的新用户,我建议你避免使用像“createReducer”这样的包装器。只需将您的reducer编写为纯函数。它们应始终具有两个参数stateaction并返回新状态。您的reducer应该有一个基于action.type的开关语句。

请阅读有关Reducer的Redux文档。 http://redux.js.org/docs/basics/Reducers.html