2016-02-17 14 views
10

Non sto passando in nessuna configurazione di configurazione speciale né sto impostando/o chiamando Destroy ... ma il mio stato è in fase di pulizia ... comunque per impedirlo? Ho bisogno che lo stato si fermi perché ho bisogno di quei dati attraverso la mia applicazione.redux-form sta distruggendo il mio stato una volta che il componente è smontato, cosa dà?

prev state: I see it in there... via redux-logger 
action: redux-form/Destroy 
next state: it's gone. 
+0

Ho lo stesso problema. Sto creando una pagina di accesso. Funziona bene fino a quando non mostro più il modulo di login e il mio stato viene cancellato dal 'redux-form/DESTROY'. Hai trovato una soluzione? –

+1

Sembra che nel mio caso si sia verificato un errore del programmatore. Forse questo aiuta qualcun altro che ha commesso lo stesso errore. Il mio riduttore stava restituendo 'initialState' per il caso di default invece di solo' state'. Risolto ora. –

risposta

27

del modulo sottostruttura stato è distrutte quando il modulo è montata, in base alla progettazione. Questo è il comportamento predefinito e previsto.

Da v6.2.1 in poi c'è una proprietà del modulo di configurazione destroyOnUnmount, che consente/esplicitamente disabilita il comportamento dello stato-compensazione su una forma specifica (docs here)

import { reduxForm } from 'redux-form'; 

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

Questo è utile quando si dispone di un modulo il cui stato che si desidera conservare se l'utente lo abbandona a metà strada, si allontana e poi ritorna più tardi.

+1

questo ora sembra funzionare a partire dalla v6.2.1: https://github.com/erikras/redux-form/releases/tag/v6.2.1 –

+0

@MattDell, grazie, aggiornato – davnicwil

+0

Nella mia situazione ho anche bisogno di aggiungere 'keepDirtyOnReinitialize: true' oltre a' destroyOnUnmount: false'. – Pete

2

Probabilmente si sta fondendo redux-forms s' stato in tua, si dovrebbe avere sotto chiave separata. L'azione Destroy restituisce un valore non definito, il che è corretto, se il riduttore delle forme ridotte gestisce solo la parte del negozio.

assicurarsi che stai seguendo passo # 1 in questo tutorial, specialmente la parte form: formReducer: https://redux-form.com/7.2.3/docs/gettingstarted.md/#step-1-of-4-form-reducer

+0

sì, credo di avere tutto cablato .. solo strano .. ricontrollare tutto - grazie. –

+0

collegamento non disponibile :( –

0

Mi sono imbattuto in questo stesso problema personalmente utilizzando Redux Modulo di recente

enter image description here

enter image description here

Se dopo il dispacciamento un'azione e passare attraverso il riduttore, Redux-forma spedizione DISTRUGGERE azione. Il commento di Brennan Cheung mi ha aiutato a capire che lo stato in cui stavo tornando/modificando nel mio riduttore aveva perso le informazioni che sono state rimandate al negozio. Dopo aver risolto questo problema, la forma di redux non invia più automaticamente l'azione di distruzione.

Ad esempio: Inizialmente, stavo tornando questo:

[ 
     { 
     "id": "dd8684f0-8a8a-11e7-97ac-8350cad5200c", 
     "timestamp": 1503771468479, 
     "body": "comment2", 
     "author": "author2", 
     "parentId": "ee6a6c5c-1821-4280-80b7-90fa97137137", 
     "voteScore": 1, 
     "deleted": false, 
     "parentDeleted": false 
     } 
    ] 

Quando ho effettivamente intenzione di restituire questo

{ 
     "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 
      } 
     ] 
     } 
    } 

Quindi sicuramente controllare in che stato si sta tornando al negozio. Spero che questo aiuto!

+0

Stai solo dicendo che stavi cancellando per errore alcune delle tue gerarchie di stato nel tuo riduttore? –

+0

Sort of .. Non ho restituito l'intero stato quando dovevo. Necessario usare {... stato} –

Problemi correlati