我有一个带有列表和id映射的规范化存储:
{
"byId": {
"images": {
"10984": {"id": "10984", "src": "/img.png"}
}
},
"myImages": [
"10948"
]
}
现在我想创建一个新图像,并将其添加到列表中。问题是,在我将其发送到服务器之前,我没有id。所以我可以生成一个随机id
"tempid19048": {"id": "tempid19048", src: "/img.png"}
"myImages": [
"10948",
"tempid19048"
]
然后我将它保存到服务器并获取一个id我发送一个动作。我可能在州的多个部分使用tempid19048
。
使用新ID更新所有内容的理智方法是什么?我接近这一切都错了吗?
答案 0 :(得分:1)
您可以在"myImages": {
"10948": "10948",
"tempid19048": "tempid19048"
}
中将ID设为键值对。
myImages["tempid19048"]
现在您想要使用的地方可以用作
"tempid19048"
这将为您提供当前值"myImages": {
"10948": "10948",
"tempid19048": "newServerID"
}
。
如果你需要改变这个tempId,你只需要改变值,键也保持不变。
tempID
因此,无论您使用session.TransmitUnsafe(
Details::Solve,
samplesCount,
pinnedInputData.GetDevicePointer( ),
Offset( pinnedOutputApproximationData.GetDevicePointer( ), outputIndex ),
Offset( SolutionData.get( ), SolutionIndices.at( outputIndex * SolutionSize ) ),
InputLength,
OutputLength,
samplesCount
);
的地点数量是多少,现在只需要在一个地方进行更新。
答案 1 :(得分:1)
因为Redux实际上是一个客户端状态管理器,所以通常你只想镜像全局状态。如您所知,与Flux / GraphQL不同,它没有任何缓存,乐观更新等功能。我的直觉告诉我,在不损害Redux构建的纯粹简单性的情况下构建这将是困难的。
那就是说,我发现redux-optimistic模仿了Flux对Redux的乐观更新。我没用过它,但看起来还不错。
但即使 表示,我仍然强调设计出任何对临时ID /乐观更新等需求的简单解决方案:
id
添加到全局状态