reactjs - 通过重新选择将选择器结果传递给另一个选择器
问题描述
我正在创建选择器以从我的状态获取派生数据,但我遇到了一个问题,即我的一个输入选择器依赖于另一个输入选择器的结果,我找不到解决它的方法。我的 Redux 状态是可序列化和规范化的,类似于关系数据库,简化版本如下所示:
const state = {
tasks: {
1: {
manualStart: '1/1/2019'
duration: 3
},
2: {
manualStart: undefined
duration: 2
},
3: {
manualStart: undefined
duration: 5
},
...
},
taskPredecessors: {
2: 1,
3: 2,
...
}
}
这意味着任务 1 必须在任务 2 开始之前完成,依此类推。我正在尝试编写选择器以根据其前身为每个任务派生开始/结束日期,或者使用手动开始(如果存在)。
我最初的直觉是编写如下所示的选择器:
const getTaskStart = createSelector(
getTaskManualStart,
getTaskPredecessorEnd,
(manualStart, predecessorEnd) => manualStart || predecessorEnd
)
const getTaskEnd = createSelector(
getTaskStart,
(state, { taskID }) => state.tasks[taskID].duration,
(taskStart, duration) => taskStart + duration
)
const getTaskManualStart = (state, { taskID }) => state.tasks[taskID].manualStart
????? const getTaskPredecessorEnd = createSelector (
(state, { taskID }) => state.taskPredecessors[taskID],
(predTaskID) => // Need tocall getTaskEnd of the predTaskID without ref to State
)
如何创建选择器来获取任务的前身结束日期?我想获取任务的前身 ID,然后使用该 ID 调用 getTaskEnd 选择器。我不能将一个的结果用作另一个的参数。
PS - 我知道这没有正确记忆。我计划使用re-reselect。只是还没到那个地步。
解决方案
推荐阅读
- java - JUnit hibernate.LazyInitializationException
- c# - RegEx 从 SQL 存储过程定义中提取参数
- r - 过滤向量的非零元素的管道/dplyr友好方式
- android - 无论启动任何活动,我都想显示一个弹出窗口。该弹出窗口必须始终在 Android 的顶部
- installation - 如何为客户端应用程序安装 NLog
- javascript - 将 PHP 数组从外部 php 文件传递到主页上的脚本标签
- json - JSON视图未将ObjectIds列表呈现为字符串
- spring - Spring Hateoas linkto 依赖于 Host 请求标头。如何避免它并使用请求 URL 中的主机?
- javascript - 如何更改 js URL 对象路径名和协议属性?
- php - PHP使用foreach循环在表格中显示数据