2017-08-25 11 views
0

1つのプロパティの状態の変更が別のプロパティの状態に影響を及ぼすシナリオを、どのように処理しますか?別のプロパティの状態への影響の処理

私が解決しようとしている問題を明確にするのに役立つ実際のシナリオは次のとおりです。

私は、完全に独立したコンポーネントとして使用できる汎用日付ピッカーコンポーネントを持っています。または、日付ピッカーの別のインスタンスに「リンク」することができます。

私はユーザーに2つの日付を設定する必要があるときはいつでも、この「リンクされた」アプローチを使用します。開始日と終了日。ユーザーが開始日を設定すると、ユーザーが2番目の日付ピッカーで設定した開始日より前のすべての日付を無効にしたいと考えています。このようにして、ユーザーは誤って開始日より前の終了日を設定することはできません。

各日付ピッカーは、いくつかのプロパティを持つ私のレデューサーのオブジェクトです。だから、次のようになります。オブジェクトのプロパティの値を設定

datePickers: { 
    "startDatePicker": { 
     activeDate: "8/24/2017", 
     disableBefore: "", 
     disableAfter: "" 
    }, 
    "endDatePicker": { 
     activeDate: "8/25/2017", 
     disableBefore: "8/24/2017", // Notice that the disableBefore is set to the active date in startDatePicker 
     disableAfter: "" 
    } 
} 

は十分に簡単ですが、私は興味深い問題に実行していますよ。

私の言ったように、私の日付ピッカーは、単一の独立した日付ピッカーとして使用できます。その場合、別の日付ピッカーインスタンスの無効日付は設定しません。

問題は、「リンクされた」インスタンスを使用して2番目の日付ピッカーの無効日付を設定しようとするたびに、日付を設定するために使用されるアクションが、日付ピッカーがリンクされていないレデューサーで問題を作成します。すべてのレデューサーが同じアクションに応答するので、日付ピッカーの独立したインスタンスを持つレデューサーは、引き続きアクションに応答し、存在しない日付ピッカーの無効日付を設定しようとします。

私が持っていたアイデアの1つは、減速機の状態を使用することでしたが、それは悪い考えです。ここで私はその質問に尋ねました。私は答えに同意します。 Conditions in reducers

答えて

1

私は、店内の日付ピッカーを一意に識別する方法があると思います。

私が行うことは、datepickerを更新するアクションに、これがリンクされている他の日付ピッカーを識別するフィールドを持つことです。

私はアクション作成者から2つのアクションをディスパッチできます(私はRedux Observableと思っていますが、Redux Thunkでも可能です):このdatepickerを更新するもの、リンクされたdatepickerを更新するもの。

これは、店舗にdatepickerを更新する作業を任せるだけで、ロジックについて心配することはありません。

+0

私もアイデアを思いついたが、私はあなたの方が好きだ。私は論理を逆転させることを考えていました - 依存性の逆転のように。最初の日付ピッカーに無効な日付を格納し、2番目の日付ピッカーからデータを読み込ませます。私のアプローチに夢中ではなかったのは、2番目の日付ピッカーに属するデータを最初のデータピッカーに保存しておくのは、それほど直感的ではないということです。あなたの方がずっと簡単です。ありがとうございました! – Sam

+0

私はこれに銃を飛ばしたと思う。私はこれが実際に私の問題をどのように解決するのか分かりません。私はすでに、無効にされた日付を設定するために私のアクションクリエイターにいつ呼び出すかを制御する方法を持っています。正当に 'SET_DISABLED_DATES'を呼び出すと問題が発生し、すべてのレデューサーが応答しますが、それらのすべてに指定されたdatePickerが定義されているわけではありません。私がここで見る唯一の解決策は、 'Object.assign()'を実行する前に指定された日付ピッカーが定義されていることを確認する条件を設定することです。ここでは、さらに詳しく説明した新しい質問があります:https://stackoverflow.com/questions/45889793/reducer-behavior – Sam

関連する問題