React-dnd: DropTargetマッピングと一緒にredux接続を使用する

作成日 2016年02月09日  ·  5コメント  ·  ソース: react-dnd/react-dnd

ドロップターゲットでもあるコンポーネントにreduxを接続する正しい方法を見つけようとしています。

export default DropTarget(dragTypes, storyTarget, collect)(connect(mapStateToProps)(StoryEditor));

これが私が現在それらを接続している方法であり、それは機能しているようですが、これが正しいことを確認したかったのです。

最も参考になるコメント

私はこのようにします:

import { compose } from 'redux'

export default compose(
  DropTarget(dragTypes, storyTarget, collect),
  connect(mapStateToProps)
)(StoryEditor);

全てのコメント5件

私はこのようにします:

import { compose } from 'redux'

export default compose(
  DropTarget(dragTypes, storyTarget, collect),
  connect(mapStateToProps)
)(StoryEditor);

React DnDのドキュメントでは、 @ gaearonは_.flowを使用してコンポーネントを複数の上位レベルのコンポーネントで装飾します。 だから私がこの権利を読んでいるなら、私たちは実際にreduxからcompose関数を使うことができますよね?

@ ekeric13 Reduxのcomposeは、引数が逆になっている_.flowと同じです。 あれは、

compose(f, g, h)(x) === flow(h, g, f)(x) === f(g(h(x)))

@gaearon compose使用は私にとっては問題なく機能しますが、 composeのドキュメントには、composeに渡されるほとんどの関数は単一のパラメーターを期待する必要があると記載されていますが、3つの引数をに渡すことができます。 DropTarget 。 なぜこれが機能するのですか?

作成(...関数)

右から左に関数を構成します。

これは関数型プログラミングユーティリティであり、便宜上Reduxに含まれています。
これを使用して、複数のストアエンハンサーを連続して適用することをお勧めします。

引数

(引数):構成する関数。 各関数は単一のパラメーターを受け入れることが期待されています。 その戻り値は、左側にある関数への引数として提供されます。 例外は、複数のパラメーターを受け入れることができる右端の引数です。これは、結果の合成関数の署名を提供するためです。

BuilderArea.propTypes = {
  addPanel: PropTypes.func.isRequired
};

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

export default compose(
  DropTarget(Types.PANEL_CARD, builderAreaTarget, (connect, monitor) => ({
    connectDropTarget: connect.dropTarget(),
    isOver: monitor.isOver()
  })),
  connect(
    mapStateToProps,
    { addPanel }
  )
)(BuilderArea);
このページは役に立ちましたか?
0 / 5 - 0 評価