【发布时间】:2018-04-06 16:05:33
【问题描述】:
我正在制作一个显示食谱的 react/redux 应用程序。当应用程序加载时,我会从所有用户中加载前 10 个,例如提要。我想为个人用户制作一个页面,显示他们所有的食谱。
当我访问他们的页面时,我尝试更改 redux 商店以返回所有用户食谱,但是当我返回主提要时,我必须再次更改商店(所有用户的前 10 个)。这种从 'GET_RECIPES' 到 'GET_USER_RECIPES' 的变化给我带来了问题,因为我一次加载 10 个,我需要返回 ...state + 新加载的食谱。
制作一个只显示用户食谱的新减速器是不好的做法。这似乎是我唯一的选择。因此,我的主要提要有一个减速器,然后当我单击用户页面并按用户 ID 显示所有食谱时使用一个减速器。
这是我目前无法使用的减速器:
const recipesReducer = (state = [], action) => {
switch (action.type) {
case 'GET_RECIPES':
return [...state, ...action.payload]; //PROBLEMS
case 'POST_RECIPE':
return [...state, action.payload];
case 'GET_USER_RECIPES':
return [...action.payload]
default:
return state
}
}
export default booksReducer;
【问题讨论】:
-
MongoDB 在这个逻辑中的位置以及您如何处理获得前 10 个配方?我的意思是在哪里以及如何?
-
我将它添加到原始问题中。因为每次加载 10 个配方时,我都会将 redux 更改为 store 以将它们附加到现有的配方中。这与我更改状态以按用户加载所有食谱时发生冲突。我回到提要,它添加到 get all 中的状态并创建重复项。
-
这与 mongodb 完全无关,在不知道配方实体的关系的情况下无法回答。食谱是否在用户之间共享?您可能希望将它们放在键是配方 ID 的对象中,然后过滤它们以查找关联的用户 ID。当新食谱出现时,您只需将它们添加到您的商店。目前尚不清楚“前 10 个”的确切含义。它们按什么顺序排列?排序标准是什么?
-
我的意思是你在哪里使用这个?我不明白你如何处理你的状态,但你的提要(每个用户 10 个),用户食谱可以分开。您的帖子将配方添加到用户的配方状态,您可以获取您的提要并调度相关的操作创建者。正如@timotgl 所说,这有点不清楚。
-
我的 redux 食谱状态是来自所有用户的所有食谱,一次 10 个。当我单击单个用户页面时,我必须点击数据库才能从该用户 ID 中获取所有食谱。为此使用一个减速器并更改状态给我带来了问题,所以我真的在问我是否可以使用多个减速器,一个来自所有用户的食谱(一次 10 个),另一个用户食谱是来自用户的所有食谱我们点击的页面。
标签: reactjs redux react-redux