2017-02-16 5 views
2

私の状態ツリーでは、データBは状態Aから派生しています。非同期計算にもかかわらず、Redux最小状態?

B等の画像、3D幾何学、音楽トラック、とすることができる、それが既に状態ツリーのパラメータAに基づいてのみを算出します。 しかし、鍵はBAから非同期に計算されるということです。

BAが変更されるたびに変更されます。 Bは、シリアライズ可能である場合とそうでない場合があります。

還元状態を最小限に抑えることをお勧めします。これを達成するためにセレクタを使用して、Bを状態から削除しようとしていました。しかし、Bは非同期に計算されるため、reselectのようなセレクタやメモ型セレクタを使用することはできません。状態を最小限に抑え、Bを含まないようにするためのソリューションはありますか?

+0

「B」を保存する必要がありますか? 'A'を管理するコンポーネントはどのように見えますか? – juancab

+0

Aはちょうど2つのパラメータであると想像してください。数字。コンポーネントは、Aを表すのに適切なものであれば、スライダー、チェックボックスにすることができます。 – bebbi

答えて

-1

あなたのレデックスストアにはいくつのレデューサーがありますか? combinereducers()を使用して複数のレデューサーを管理していますか?そうであれば、AとBの両方が独自の初期状態で自分の初期状態とReact Componentから独立したリデューサーになり、それ自身のローカル状態になり、対応するライフサイクルイベントメソッドから非同期アクションクリエーターをディスパッチして小道具を更新できます

あなたが渡した小道AからのBへのダウンは、その親コン​​ポーネントから派生したものであり、レデューサーからの初期状態に格納する必要はありません。propTypes & defaultPropsを使用できます。それはあなたのコンポーネントのための小道具の名前の小道具タイプを割り当てることができます減量する人にそれらを置くことなく。

たとえば、反応ブートストラップ のソースコードは、そのコンポーネントに渡す必要があるセットアップのデフォルトの小道具を確認する方法です。コンポーネントに独自のproptypeとdefaultpropが設定されている場合、reduxストアからその小道具を渡す必要はありません。プロポーション値をコンポーネントAから動的に生成してBに渡すことができます。

import classNames from 'classnames'; 
import React from 'react'; 
import elementType from 'react-prop-types/lib/elementType'; 

import { bsClass, prefix, splitBsProps } from './utils/bootstrapUtils'; 

const propTypes = { 
    /** 
    * Turn any fixed-width grid layout into a full-width layout by this property. 
    * 
    * Adds `container-fluid` class. 
    */ 
    fluid: React.PropTypes.bool, 
    /** 
    * You can use a custom element for this component 
    */ 
    componentClass: elementType, 
}; 

const defaultProps = { 
    componentClass: 'div', 
    fluid: false, 
}; 

class Grid extends React.Component { 
    render() { 
    const { fluid, componentClass: Component, className, ...props } = 
     this.props; 
    const [bsProps, elementProps] = splitBsProps(props); 

    const classes = prefix(bsProps, fluid && 'fluid'); 

    return (
     <Component 
     {...elementProps} 
     className={classNames(className, classes)} 
     /> 
    ); 
    } 
} 

Grid.propTypes = propTypes; 
Grid.defaultProps = defaultProps; 

export default bsClass('container', Grid); 
+0

もちろん、還元状態の「A」と「B」の両方の場合は単純です。その場合にコンポーネントのローカルステートは必要ありません。レフィックスはそれをすべて処理できます。しかし、私は純粋に 'A'から派生したオブジェクトなので、状態から' B'を削除することを求めています。 – bebbi

+0

@bebbi私はプロタイプについて私の答えを編集しました。それはあなたを助けましたか? –

+0

いいえ@Milo、それは役に立ちません。 'propTypes'は質問とは何の関係もなく、プロップの検証のためのものです。私は、ダン・アブラモフ氏のように、「イディオム・リダックスと反応するアプリケーション」のような良い反応還元型イントロをお勧めしたいと思います。 – bebbi

関連する問題