2017-07-03 106 views
1

enter image description here阵营可排序排序问题

正如你可以在GIF看到,而列表中的排序项似乎占位符元素得到由其他人重叠。我的代码逻辑它相当于example

它是一个绝对定位元素的灰色背景。

这是我的实际代码:

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'} 
/> 

回答

0

作为使用绝对定位元素中,它需要的容器的引用可排序部件IM。添加getContainer道具解决了我的问题:

<SortableList 
    .... 
    getContainer={() => { 
    return ReactDOM.findDOMNode(this.refs['menu']) 
    }} 
/>