2016-02-17 5 views
10

私は特別な設定を渡すつもりではないし、Destroyを設定しています...しかし、私の状態はきれいになっています...とにかくこれを防ぐには?私は自分のアプリケーションからそのデータを必要とするので、私は状態を固執する必要があります。あなたはおそらくあなたにredux-formsの状態をマージしているredux-formは、コンポーネントがアンマウントされたら、私の状態を破壊しています。

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

私は同じ問題を抱えています。私はログインページを作成しています。私がログインフォームをもう表示しなくなり、私の状態が 'redux-form/DESTROY'から抹消されるまではうまく動作します。 ソリューションを見つけましたか? –

+1

私の場合、プログラマーのエラーのように見えます。たぶんこれは、同じ間違いをした他の誰かに役立つかもしれません。私のレデューサーは 'state'の代わりに' defaultState'をデフォルトのケースに戻していました。今修正されました。 –

答えて

27

フォームの状態サブツリーは、フォームがデザインによって、アンマウントされたときに破壊です。これがデフォルトの動作です。

import { reduxForm } from 'redux-form'; 

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

docs here)明示的に可能にする/特定のフォーム上の状態クリアの動作を無効にし、フォームの設定プロパティdestroyOnUnmountがある以降v6.2.1から

あなたはそのフォームを持っているときに便利ですユーザーが途中で放棄し、離れてナビゲートしてから後で戻った場合に保持したい状態です。

+1

これはv6.2.1として動作しているようです:https://github.com/erikras/redux-form/releases/tag/v6.2。1 –

+0

@MattDellありがとう、 – davnicwil

+0

私の状況では、 'destroyOnUnmount:false'に加えて' keepDirtyOnReinitialize:true'を追加する必要がありました。 – Pete

2

、あなたは別のキーの下でそれを持っている必要があります。 Destroyアクションは未定義を返します。これは、redux-フォームレデューサーがそれをストアの一部としてのみ管理する場合は問題ありません。

には、このチュートリアル、特別form: formReducer一部のステップ#1を以下のしていることを確認します: https://redux-form.com/7.2.3/docs/gettingstarted.md/#step-1-of-4-form-reducer

+0

ええ、私はすべてが有線で結ばれていると信じています。ただ奇妙です。すべてを再チェックします - ありがとう。 –

+0

リンクが利用できません:( –

0

私は個人的には、Reduxの形式の発送はアクションを破壊するアクションを派遣し、減速を経て、最近

enter image description here

enter image description here

Reduxのフォームを使用してこの同じ問題に遭遇しました。 Brennan Cheungのコメントは、私がレデューサーに戻って/修正していた状態に、店に送り返された情報がなかったことに気づいた。私がこれを修正した後、reduxフォームはdestroyアクションを自動的にディスパッチしません。例えば

: 当初、私はこれを返していました:

私は実際にこの

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

だから間違いなくあなたが店に戻っているものの状態をチェック返すためのもの

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

。このヘルプが欲しい!

+0

ちょうどあなたがあなたの減速機のいくつかの状態階層を間違って抹消したと言っていますか? –

+0

一種。私が想定していたとき、私は州全体を返さなかった。 {... state}を使用する必要がありました –

関連する問題