Je ne passe aucun paramètre de configuration spécial et je ne configure/ou n'appelle pas Destroy ... mais mon état est en cours de nettoyage ... de toute façon pour éviter cela? J'ai besoin de l'état pour rester comme j'ai besoin de ces données dans mon application.
prev state: I see it in there... via redux-logger
action: redux-form/Destroy
next state: it's gone.
La sous-arborescence d'état du formulaire est détruite lorsque le formulaire est démonté, par conception. Il s'agit du comportement par défaut et attendu.
À partir de v6.2.1 il y a une propriété de configuration de formulaire destroyOnUnmount
, qui active/désactive explicitement l'état -le comportement de compensation sur un formulaire spécifique ( docs here )
import { reduxForm } from 'redux-form';
reduxForm({
form: 'example',
destroyOnUnmount: false
})(...)
Cela est utile lorsque vous avez un formulaire dont vous souhaitez conserver l'état si l'utilisateur l'abandonne à mi-chemin, s'éloigne, puis revient plus tard.
Vous fusionnez probablement l'état de redux-forms
Dans le vôtre, vous devriez l'avoir sous une clé distincte. L'action Destroy
renvoie undefined, ce qui est correct si le réducteur redux-forms gère uniquement sa partie du magasin.
Assurez-vous de suivre l'étape # 1 de ce tutoriel, spécialement la partie form: formReducer
: https://redux-form.com/7.2.3/docs/gettingstarted.md/#step- Réducteur de forme 1 sur 4
J'ai rencontré ce même problème personnellement en utilisant Redux Form récemment
Où après avoir envoyé une action et passé par le réducteur, redéfinissez l'action DESTROY. Le commentaire de Brennan Cheung m'a aidé à réaliser que l'état que je retournais/modifiais dans mon réducteur avait des informations manquantes qui ont été renvoyées au magasin. Après avoir corrigé cela, le formulaire redux ne distribue plus automatiquement l'action de destruction.
Par exemple: Au départ, je retournais ceci:
[
{
"id": "dd8684f0-8a8a-11e7-97ac-8350cad5200c",
"timestamp": 1503771468479,
"body": "comment2",
"author": "author2",
"parentId": "ee6a6c5c-1821-4280-80b7-90fa97137137",
"voteScore": 1,
"deleted": false,
"parentDeleted": false
}
]
Quand je voulais vraiment retourner ça
{
"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
}
]
}
}
Vérifiez donc dans quel état vous retournez au magasin. J'espère que cette aide!