react-sortable-hoc 拖动元素时列表消失

问题描述 投票:0回答:3

JSFiddle:https://jsfiddle.net/40vpaLj5/

我用谷歌搜索了一些问题,我发现的唯一消失的相关问题是当人们在模态上使用它时,他们谈论设置 z-index 来修复它。无论如何我都试过了还是没有。我该如何解决这个问题?

import React from 'react';
import PlaylistPages from './PlaylistPages';

class PlaylistSortableComponent extends React.Component {
  constructor(props, context) {
    super(props, context);

    this.state = {
      test: [
        '1','2', '3', '4'
      ]
    }
  }

  render() {
    return (
      <PlaylistPages pages={this.state.test} style={{zIndex: 999999}} />
    );
  }
}   


const PlaylistPages = SortableContainer(({pages}) => {
  return (
    <div>
      {
        pages.map((page, index) =>
          <PlaylistPage key={index} page={page} style={{zIndex: 99999999}} />
      )}
    </div>
  );
});   

const PlaylistPage = SortableElement(({page}) => {
  return (
    <div style={{zIndex: 99999999}} >{page}</div>
  );
});
javascript reactjs drag-and-drop higher-order-components react-sortable-hoc
3个回答
10
投票

每个

sortableElement
都应该有自己的
index
道具:

<PlaylistPage key={index} index={index} page={page} style={{zIndex: 99999999}} />

这是您的 jsfiddle 的更新:
https://jsfiddle.net/40vpaLj5/1/


2
投票

我也遇到了同样的问题,Dekel是对的。就我而言,z-index 修复了错误:

<SortableList
    axis="y"
    helperClass="sortable-list-tab"
    lockAxis="y"
    distance={0}
    onSortEnd={onSortEnd}
>
    <ul>
       {toolItems.map((value, index) => (
          <SortableItem key={`item-${index}`} index={index}>
              <li className="sortable-list-tab" >
                 <Button type="dashed">{`${value.label} (${index + 1})`}</Button>
              </li>
          </SortableItem>
        ))}
    </ul>
</SortableList>

sortable-list-tab 类看起来像:

.sortable-list-tab {
    cursor: default;
    visibility: visible;
    z-index: 99999999;
    list-style-type: none;
    padding: .3em;
  }

0
投票

设置zIndex值后。它已经起作用了。MUI 对话框的 zIndex 约为 1300,所以高于它就可以了。

 dragged: {
zIndex: 999999,
boxShadow:
  "0px 6px 6px -3px rgba(0, 0, 0, 0.2), 0px 10px 14px 1px rgba(0, 0, 0, 0.14), 0px 4px 18px 3px rgba(0, 0, 0, 0.12)",
"& button": {
  opacity: 50
}

}

© www.soinside.com 2019 - 2024. All rights reserved.