1
私はフォームビルダーを作成しているので、フィールドを並べ替えることができるようにする必要があります。定型的なドラッグ/ドロップコードをすべて再利用可能な場所に置いておき、上位コンポーネントは良い方法のようですそれをする。だから、私はこのようなコードを持っています:高次成分と反応dndを併用できますか?
function SortableField(FieldComponent) {
return class extends React.Component {
render() {
const { connectDragSource, connectDropTarget } = this.props;
return connectDragSource(connectDropTarget(
<FieldComponent {...this.props}/>
));
}
}
}
export default flow(
DragSource('field', fieldSource, collect),
DropTarget('field', fieldTarget, collectTarget)
)(SortableField);
上記のコードは、すべて定型的なドラッグ/ドロップコードです。
各フィールドタイプのコンポーネントをその中にラップすると思います。問題は、私は、私は次のエラーを取得するこれを実行する場合である:私はそれは私がSortableFieldを渡したいとしたDragSource/DragTarget一部機能を機能していないためだと思います
Uncaught TypeError: Cannot call a class as a function
。この仕事をする方法はありますか?
ありがとうございます!それはトリックをしたようだ。 – pogo
これはもう高次成分ではありません。高次のコンポーネントは、コンポーネントを受け入れ、コンポーネントクラス自体ではなくコンポーネントを返す_function_であると考えられます。この答えのコードは、 'SortableField'が' FieldComponent'だけで動作するようにします。 – heylookltsme