gpt4 book ai didi

javascript - 从 redux reducer 获取结果

转载 作者:行者123 更新时间:2023-11-29 15:11:57 25 4
gpt4 key购买 nike

我有一个从外部代码调用的函数。它的效果应该是根据传递的数据在我的 redux 存储中创建一个对象,并返回对象的 id 作为 future 更新的句柄:

const addNode = (data) => {
dispatch(createNode(data));
...
return createdNodeId;
}

我的问题是:如何获取作为分派(dispatch)操作结果创建的对象的 ID?

调度返回完整状态,而不仅仅是新对象。我看到了几个选项,但我不确定哪个是最好的...

选项 1:生成并传递 ID

在 addNode 中自己生成 id,并将其与其余数据一起传递到 createNode(...)。

从实用的 Angular 来看,这可能是最简单的,但从概念的 Angular 来看,我觉得这很糟糕。以前内部的 id 生成策略突然暴露在我的函数中,而且,根据 id 策略,我可能不得不处理各种 id 冲突和/或同步以避免这些。

选项 2:从结果状态中提取 ID

我想可以从结果状态推断出新节点。但这很快就会变得非常复杂,更不用说慢了......

选项 3:在操作中传回 ID

Action 应该是不可变的。但是,如果我在我的操作中指定一个“结果”属性,reducer 将写入该属性以传递所需的信息,那么实际会发生什么?以我的理解,这应该可以正常工作,只要“result”属性永远不会被 reducer 视为操作输入有效负载的一部分。

这仍然有点狡猾,因为 Action 现在是部分可变的。但考虑到其他选项,它现在是我最喜欢的。

编辑 A similar question之前有人问过,但是回答是换了reducer,避免了结果的需要。遗憾的是,这不是一个选项。

最佳答案

听起来目前是您的 reducer 正在为新创建的对象生成 id。如果那是正确的,那么我猜它是一个相当简单的同步过程。这对我来说似乎也不对。我希望 reducer 对操作中传递的数据进行操作,其中应包括新对象的 ID。所以我会建议选项 4..

将从 reducer 生成 id 的代码分解到它自己的空间中。使用该代码将 id 包含在为创建新对象而分派(dispatch)的 Action 中,可以来自任何分派(dispatch) Action 的代码,也可以来自 Action 创建者本身。从您的函数中返回 id。

const addNode = (data) => {
const action = createNode(data);
dispatch(action);
...
return action.payload.id;
}

关于javascript - 从 redux reducer 获取结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53639157/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com