当前位置 : 主页 > 手机开发 > 无线 >

拖放 – 在拖动移动时不会更新React-dnd元素样式

来源:互联网 收集:自由互联 发布时间:2021-06-10
我已经调整了 react-dnd sortable example以在我的应用程序中使用. 我不能让“不透明”跟随我的拖累. 当我最初选择元素时,应用了不透明度: 但是当我向上移动以改变位置时,不透明度仍然应
我已经调整了 react-dnd sortable example以在我的应用程序中使用.

我不能让“不透明”跟随我的拖累.

当我最初选择元素时,应用了不透明度:

starting drag

但是当我向上移动以改变位置时,不透明度仍然应用于原始DOM元素(?).

moving over element while dragging

状态相应地更改,与此状态关联的表中的列正在重新排序.因此,除了不透明之外,其他一切都很好.

当我移动元素时,只有li的值被更改但数据重新连接不会改变位置.

enter image description here

我的应用程序的唯一区别是我如何管理状态.在我的应用程序中,状态通过redux进行管理.

传递给DropTarget的悬停函数基本上是从示例中复制和粘贴的.

SortableColumnEntry组件:

class SortableColumnEntry extends Component {
  render(){
    const { connectDragSource, connectDropTarget } = this.props
    const { column, isDragging, index } = this.props

    const opacity = isDragging ? 0 : 1

    const element = connectDropTarget(connectDragSource(
      <li
        style={{opacity: opacity}}</li>
    ))

    return element
  }
}

export default flow(
  DragSource(DragTypes.COLUMN, source, (connect, monitor) => ({
    connectDragSource: connect.dragSource(),
    isDragging: monitor.isDragging()
  })),
  DropTarget(DragTypes.COLUMN, target, (connect) => ({
    connectDropTarget: connect.dropTarget()
  }))
)(SortableColumnEntry)
好的,我终于把它整理好了

我从父组件传入的键值存在问题.

我过去常常将该键放在索引上,该索引随元素而变化.

多数民众赞成我曾经这样做过:

const columnTags = columns.map(
  (column, index) => 
    <SortableColumnEntry 
    key={index} 
    index={index}
    column={column} />)

当我改变它以保持独特并与州相关联时:

const columnTags = columns.map(
  (column, index) => 
    <SortableColumnEntry 
      key={column} 
      index={index}
      column={column} />)

一切都开始奏效了.

目前,列值是唯一的并且与单个条目相关联 – 稍后,将id字段添加到状态会很好.

网友评论