我没有传递任何特殊的配置设置,也没有设置/或调用Destroy ...但我的状态正在被清理......无论如何要防止这种情况?我需要状态,因为我需要那些数据而不是我的应用程序。
prev state: I see it in there... via redux-logger
action: redux-form/Destroy
next state: it's gone.
答案 0 :(得分:58)
在表单卸载时,表单的状态子树 被销毁。这是默认和预期的行为。
从v6.2.1开始,有一个表单配置属性destroyOnUnmount
,它明确启用/禁用特定表单上的状态清除行为(docs here)
import { reduxForm } from 'redux-form';
reduxForm({
form: 'example',
destroyOnUnmount: false
})(...)
如果您希望保留一个表单,如果用户将其放弃一半,导航离开,然后稍后返回,则此功能非常有用。
答案 1 :(得分:2)
您可能正在将redux-forms
的状态合并到您的状态中,您应该将其置于单独的密钥下。 Destroy
动作返回undefined,如果redux-forms reducer只管理它是商店的一部分,这是没关系的。
确保您遵循本教程中的第1步,特别是form: formReducer
部分:
https://redux-form.com/7.2.3/docs/gettingstarted.md/#step-1-of-4-form-reducer
答案 2 :(得分:-1)
我最近亲自使用Redux Form遇到了同样的问题
在调度动作并通过reducer后,redux-form调度DESTROY动作。 Brennan Cheung评论帮助我意识到我在减速器中返回/修改的状态缺少被发送回商店的信息。修复此问题后,redux表单不再自动调度destroy操作。
例如: 最初,我回来了:
[
{
"id": "dd8684f0-8a8a-11e7-97ac-8350cad5200c",
"timestamp": 1503771468479,
"body": "comment2",
"author": "author2",
"parentId": "ee6a6c5c-1821-4280-80b7-90fa97137137",
"voteScore": 1,
"deleted": false,
"parentDeleted": false
}
]
当我真的想要归还
时 {
"ee6a6c5c-1821-4280-80b7-90fa97137137": {
"id": "ee6a6c5c-1821-4280-80b7-90fa97137137",
"timestamp": 1502253747021,
"title": "this is a title",
"body": "this is another body",
"author": "author2",
"category": "category1",
"voteScore": 2,
"deleted": false,
"comments": [
{
"id": "dd8684f0-8a8a-11e7-97ac-8350cad5200c",
"timestamp": 1503771468479,
"body": "comment2",
"author": "author2",
"parentId": "ee6a6c5c-1821-4280-80b7-90fa97137137",
"voteScore": 1,
"deleted": false,
"parentDeleted": false
}
]
}
}
所以一定要检查你回到商店的状态。希望这有帮助!