2015-09-07 26 views
1

我正在使用React和Redux作为我的商店。我还使用react-redux库来整合这两者。我的存储包含两组数据:关系数据存储中的列表和项目之间的关系(使用react-redux)

  • 任务{ID,姓名,assigneeId}
  • 用户{ID,名称}

我有(使用反应 - 终极版)一TaskListComponent connect - s到我的商店使用:

@connect(state => { 
    tasks: state.tasks, 
    users: state.users 
}) 

我需要这既是因为该列表有一个过滤器,允许搜索我的任务或用户名 - 我的组件需要在“用户感知”。

此组件列出另一个名为TaskItemComponent的组件,它显示任务名称和分配用户的名称。

我很努力地决定解决任务分配用户的最佳方法。

  • 反应准则告诉我,Item组件应该把Task当做道具,并在渲染函数中解析用户自己。但是,这需要组件具有存储感知能力,并且使用react-redux库时,它看起来不是允许组件访问存储,而不是对其进行访问。

  • 或者我可以解析列表中的用户,并将其与任务一起传递给Item组件,例如, <TaskItemComponent task={task} assignee={resolveTaskAssignee(task)} />。这有利于保持我的物品“哑巴”,并且意味着我不需要让它收听商店变化(甚至不了解商店)。

任何意见,将不胜感激。

回答

1

两种方法都很好。我会从外面传递道具开始,一旦它变得乏味,让Task组件接收task作为道具,但使用connect读取它的user

另请参阅https://stackoverflow.com/a/25701169/458193

0

选项#2没有任何内在的错误。你必须在某个地方做数据操作。它始终是在smart组件中执行这些操作的正确位置。

个人而言,我更喜欢商店中更好的数据模型。但是,你得到了你所得到的。