GIF でわかるように、リスト内のアイテムを注文すると、プレースホルダー要素が他の要素と重なるように見えます。私のコード ロジックは、例とまったく同じです。
灰色の背景は絶対配置要素です。
これは私の実際のコードです:
const DragHandleElement = SortableHandle(() => <span style={handleStyle} ><DragHandle /></span>);
const SortableItem = SortableElement(({content}) => {
return (
<div style={menuItemStyle}>
<DragHandleElement />
<div style={menuContentStyle}>
{Utils.getMainDesc(content)}
</div>
</div>
);
});
class VirtualList extends Component {
render() {
let {items} = this.props;
return (
<AutoSizer>
{({ width, height }) => (
<List
ref={(instance) => {
console.log(instance);
this.List = instance;
}}
rowHeight={80}
rowRenderer={({index}) => {
let {content} = items[index];
return <SortableItem key={'sort_item_'+index} index={index} content={content} />;
}}
rowCount={items.length}
height={height}
width={width}
/>
)}
</AutoSizer>
);
}
}
const SortableList = SortableContainer(VirtualList, {withRef: true});
<SortableList
ref={(instance) => {
this.SortableList = instance;
}}
lockAxis='y'
useDragHandle={true}
items={menu.content}
onSortEnd={({oldIndex, newIndex}) => this.props.onSortEnd(oldIndex, newIndex, this.SortableList)}
helperClass={'higher'}
/>
絶対配置要素内でソート可能なコンポーネントを使用しているため、コンテナへの参照が必要です。getContainer プロパティを追加すると、私の問題は解決しました。
<SortableList
....
getContainer={() => {
return ReactDOM.findDOMNode(this.refs['menu'])
}}
/>
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加