私はreact jsアプリに取り組んでおり、ドラッグアンドドロップにreact-dragulaパッケージを使用しています。子コンポーネント内でドラグラコンテナを使用していますが、ドロップイベントが発生しません。あらゆる方法を試しましたが、ドロップ イベントは発生しません。ドラッグ アンド ドロップでリストの順序を変更したい。
これは私のコードです。
import React, { Fragment } from 'react';
import { Tabs, Tab, Card } from 'react-bootstrap';
import Dragula from 'react-dragula';
import { AppCard } from '../../../../../Components/AppCard'
class App extends React.Component {
drake = null;
dragullaContainers = [];
componentDidMount() {
this.drake = Dragula(this.dragullaContainers, {
isContainer: function (el) {
if (el.id === 'social-container') {
return true;
}
return false;
},
moves: function (el, source, handle, sibling) {
if (handle.id === "socialSortBtn") {
return true;
}
return false;
},
accepts: function (el, target, source, sibling) {
return true; // elements can be dropped in any of the `containers` by default
},
});
this.drake.on('drop', (el, target) => {
// this event not occurs
console.log('drop', el, target)
});
this.drake.on('drag', (el, source) => {
console.log('drag', el)
})
}
// main function
render() {
const { data } = this.props;
const dragulaDecoratorRef = (componentBackingInstance) => {
if (componentBackingInstance) {
this.dragullaContainers.push(componentBackingInstance)
}
};
return (
<Fragment>
{data ?
<Tabs variant="pills" className="btn-group border rounded" defaultActiveKey="content" id="tools-header">
<Tab eventKey="content" title="Content" tabClassName="btn shadow-none">
<AppCard>
<Card.Body>
<div>
<ul id='social-container' ref={dragulaDecoratorRef}>
{data.active_social_icons && data.active_social_icons.length > 0 && data.active_social_icons.map((activeIcon, index) => (
<li key={index} data-index={index} className="d-flex mb-30">
<div className="">
<div className="mr-2">
<button data-toggle="tooltip" title="Drag to reorder" className="btn btn-primary btn-sm btn-icon" id="dragBtn"><span id="socialSortBtn" className="material-icons m-0">drag_indicator</span>
</button>
</div>
<div className="d-flex mb-30">List item</div>
</div>
</li>
))}
</ul>
</div>
</Card.Body>
</AppCard>
</Tab>
<Tab eventKey="style" title="Style">
tab2 content
</Tab>
</Tabs>
:
null
}
</Fragment>
)
}
}
export default App;
ドロップ イベントが発生しない理由を教えてください。ドラッグ アンド ドロップでリスト アイテムの位置を更新したい。