2017-04-13 9 views
1

statePropsconstructorStatesにマップするのは悪い習慣でしょうか?Reduxでの状態のpropsへのマッピング

彼女は一例であり、私の質問は、より明確にする:

//some class 
    constructor(props) { 
    super(props); 
    this.props.getMessages(1)  
    this.state = { 
     messages: this.props.messages 
    }; 
    } 

function mapStateToProps(state) { 
    return { 
    messages: state.messages 
    }; 
} 

上記の例では、私がthis.props.messages生のスタイルを使用することができます知っているが、私は状態に小道具を作るいくつかの例を参照してください。

私はコードペンからもらったもう一つの例:

constructor(props) { 
    super(props); 
    this.state = { 
     step: props.initialStep, 
     count: props.initialCount  
    };  
    } 

Counter.propTypes = { initialCount: React.PropTypes.number }; 
Counter.defaultProps = { initialStep: 5, initialCount: 0 }; 

にだから何人かの人々が小道具状態にしようとするときの状態に小道具を差別化のポイントは何ですか?

答えて

2

グローバルステートからローカルステートを切り離す場合にのみ、これを実行してください。

たとえば、フォームを作成している場合、ストアが更新されたときに値を置き換えないようにします。

一般に、小道具を州にコピーしないでください。それは一般的なバグの原因です。あまり明らかではないバグの1つは、コンポーネントがマウントされた時点で状態が存在しない可能性があるということです。あなたがhttp APIからそれを取得しているならば。

0

Reduxについて考える方法の1つは、アプリケーション全体の状態を保持し、管理することです。あなたのコンポーネントは単にこの状態を反映し、それを直接変更するのではなく、それをあなたの小道具に入れたいのです。さらに、コンポーネントが余分な状態を維持する必要がある場合は、stateを直接使用し、Reduxを渡す心配はありません。