Подтвердить что ты не робот

Redux-form Уничтожает мое состояние после размонтирования компонента, что дает?

Я не перехожу ни в какие специальные настройки конфигурации, я не устанавливаю/не вызываю Destroy... но мое состояние очищается... во всяком случае, чтобы это предотвратить? Мне нужно, чтобы государство держалось вокруг, так как мне нужны эти данные через мое приложение.

prev state: I see it in there... via redux-logger
action: redux-form/Destroy
next state: it gone.
4b9b3361

Ответ 1

Подструктура состояния формы уничтожается, когда форма размонтирована, по дизайну. Это поведение по умолчанию и ожидаемое поведение.

От v6.2.1 далее существует свойство конфигурации формы destroyOnUnmount, которое явно включает/отключает поведение состояния в конкретной форме (docs here)

import { reduxForm } from 'redux-form';

reduxForm({
  form: 'example',
  destroyOnUnmount: false
})(...)

Это полезно, если у вас есть форма, состояние которой вы хотите сохранить, если пользователь оставит ее на полпути, но перемещается в сторону, а затем возвращается позже.

Ответ 2

Вероятно, вы слияете состояние redux-forms в ваше, вы должны иметь его под отдельным ключом. Destroy действие возвращает undefined, что хорошо, если редуктор редукционных форм управляет только частью магазина.

Убедитесь, что вы следуете шагу 1 в этом руководстве, особенно в части form: formReducer: https://redux-form.com/7.2.3/docs/gettingstarted.md/#step-1-of-4-form-reducer

Ответ 3

Я столкнулся с этой же проблемой лично с помощью недавно созданной формы 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
          }
        ]
      }
    }

Так определенно проверьте, какое состояние вы возвращаетесь в магазин. Надеюсь эта помощь!