2016-09-05 1 views
0

を渡す:Reduxのプロップので、私は以下のいる

const mapStateToProps = (state) => { 
    return { 
    messages: state.messages 
    }; 
}; 

const mapDispatchToProps = (
    dispatch, 
    ownProps 
) => { 
    return { 
    handleSubmit: (event) => { 
     event.preventDefault(); 
     // access messages as defined in mapStateToProps here 
    } 
    } 
} 

export default connect(
    mapStateToProps, 
    mapDispatchToProps 
)(Contact); 

の考えを(mapStateToPropsで定義されている)handleSubmitコールバックでmessagesにアクセスするには?またはmapStateToPropsで定義された小道具にアクセスする方法についての一般的な考えですか?

+0

'state'変数をチェックしましたか? – zerkms

+0

@zerkms typo!改訂されました! – Drew

+0

'handleSubmit'の中で' dispatch'を使っていますか?そうでなければ 'mapStateToProps'でそれを定義できませんでしたか? – ctrlplusb

答えて

0

これを試してみてください:

const mapStateToProps = (state) => { 
return { 
    messages: state.messages 
    }; 
}; 

const mapDispatchToProps = (dispatch,ownProps) => { 
    return { 
    handleSubmit: (event,messages) => { 
     event.preventDefault(); 
     // access messages as defined in mapStateToProps here 
    } 
    } 
} 

function mergeProps(stateProps, dispatchProps, ownProps) { 
    return Object.assign({}, ownProps, stateProps, { 
    handleSubmit: (event) => dispatchProps.handleSubmit(event, stateProps.messages) 
    }) 
} 

export default connect(
    mapStateToProps, 
    mapDispatchToProps, 
    mergeProps, 
)(Contact); 
0

mapDispatch機能はmapStateの出力を与えられていません。これは主にパフォーマンスに基づいた設計上の決定です。あなたは状態に基づいてロジックを派遣書きたい場合は、いくつかのオプションがあります。

  • this.props.someActionCreator(this.props.someData)のように、あなたのコンポーネントからのコールバック関数に必要なデータを渡します。
  • 利用店舗全体の状態へのアクセス
  • connect機能を持って行動クリエイターを書くためredux-thunkのようなものがlittle-用いられる第3引数、mergePropsを持っていません。その関数を指定すると、出力はmapStatemapDispatchで呼び出され、mapStateの出力に依存する関数を生成するために使用できます。これにより、一般的に新しい機能が頻繁に作成され、パフォーマンス上の問題になる可能性があります。
  • 新しい[email protected]ベータ版は、connect実装の完全な書き換えです。内部的には、新しいAPIとして公開される新しいconnectAdvanced関数を使用します。このユースケースにはconnectAdvancedを使用できます。
関連する問題