我有订单状态。
在秩序状态下,有以下状态。
const initialState = {
channel: null,
order: {},
fetching:true,
menu: [],
categories: [],
subcategories: [],
currentCategoryId: 1,
currentSubcategoryId: 5,
currentMenu: [],
};
所以menu
是数据库中所有食品项目的列表。 categories
是菜单类别列表,subcategories
是所有子类别的列表。
现在,当用户点击类别选择器时,它会更改currentCategoryId
的值,并显示包含所选category_id的项目。 currentSubcategoryId
与currentCategoryId
的工作方式相同。
所以现在我正试图为菜单做分页。为了对菜单进行分页,我需要根据category_id
或subcategory_id
计算出有多少菜单,例如,当currentCategoryId
为1时,有多少菜单{{1 }}在那儿。所以我做了category_id = 1
。我要对currentMenu
尝试做的是,当用户点击类别选择器来更改currentMenu
时,它会更改reducer中的值并获取currentCategoryId
等于更改category_id
的菜单}。
currentCategoryId
所以我做了如上所述的reducer案例,但我不知道如何将if语句值的结果插入case Constants.CHANGE_CATEGORY:
return {...state, currentCategoryId: action.categoryId, currentMenu: state.menu.map((menu) => {
if (currentCategoryId === category_id) {
// Put results of if statement to currentMenu array..
}
})};
数组......我怎样才能实现这一点?有什么建议吗?
提前致谢。
答案 0 :(得分:0)
如果我找到了你,那么你可以使用名为' react-addons-update'的非常棒的包。
例如,您可以执行以下操作:
import update from 'react-addons-update'
...
...
case Constants.CHANGE_CATEGORY:
...
if (currentCategoryId === category_id) {
...
return update(state, {
$merge: { [currentMenu]: value }
});
...
}
})};
另一个有用的命令如$ merge是$ set。
您可以阅读更多here