私は現在、react-reduxとImmutable.jsを使用しています。私はちょうど私の店の各フィールドが不変型であることに気づいた。しかし、私がconsole.logにストアすると、実際には値が不変型のオブジェクトになります。ストア自体は、まだオブジェクトです。私のreduxストアはなぜ不変ではありませんか?
は、私はその後、私は実際に、初期状態として、空のオブジェクトを取る私の店を、作成するためにconfigStore
を呼び出して、私はなどのミドルウェア、デベロッパーツールを追加するcompose
を使用configStore
というカスタム関数を作成します。
Object {
keyA: Map(),
keyB: OrderedMap(),
...
}
これは私がセレクタはストア内のデータを取得するために全体の状態で取る私のアプリ、全体で何をしてきたと矛盾ようだ:私は私の店をCONSOLE.LOGとき、私はこのような何かを得ます。たとえば、私は(state) => state.keyA.getIn(nestedKey, furtherNestedKey)
のような何かをします。 getIn()
はImmutableJS APIです。
これは私を心配しているいくつかの質問に私をリード:
state
場合、私はどのようにそれと対話することができ、不変、店をCONSOLE.LOG際に示したように、オブジェクトが、でしたか?ImmutableとReact-reduxを使用する目的を克服して、不変でないストア(不変のデータ型を含む)を持っていますか?不変
このコードスニペット( 'state.keyA.getIn ...')は、不変が**外部のオブジェクトと対話していないことを意味します。 –
'Immutable.js'は、JSオブジェクトを不変にする唯一の方法ではありません。また、 'combineReducers'でreduxがやっていると思う' freeze() 'を使うこともできます。しかし、immutablesを使うことは全く必要ありません。これはあなたのデータを変更することを防ぐためのヘルパーです。 – Sulthan
@OliverCharlesworthああ。あなたは、絶対に正しい。しかし、いずれにも欠点はありますか?私の店が不変型のオブジェクトであるとは思われません。 – AlanH