我目前有一个Redux动作,看起来像这样:
{
type: 'user/updateRequested',
payload: {name: 'Foo', avatar: File}
}
该文件不可序列化,所以我想知道是否有更好的方法。
当分派动作时,会发生三件事:
state.user.name
,但忽略avatar
state.user.avatar
被更新)我从不将File对象存储在存储中,仅在操作中。
有没有更好的方法,或者这是不可序列化操作有效的用例?
该文件在理论上可以序列化(例如,base64),但是使用如此大量的数据可能会使使用devtools更加困难或引起其他意外的副作用。
我同意不将实际文件内容存储在操作有效负载中是有效的。
您可以保存文件的哈希(或仅保存名称和时间戳),并在需要包含内容的情况下,将其用作访问另一类型存储中文件的密钥。这将使时间旅行再次工作,但前提是必须在可以访问文件内容的相同环境中重播动作。