我已将react-dnd sortable example改编为在我的应用程序中使用。
我无法做出"不透明度"跟随我的拖累。
当我最初选择元素时,应用了不透明度:
但是当我向上移动以更改位置时,不透明度仍然应用于原始DOM元素(?)。
状态相应更改,与此状态关联的表中的列正在重新排序。因此,除了不透明之外,其他一切工作正常。
当我移动元素时,只会更改li的值,但data-reactid
不会改变位置。
我的应用程序的唯一区别是我管理状态的方式。在我的应用程序中,状态通过redux进行管理。
传递给DropTarget的hover
函数基本上是从示例中复制并粘贴的。
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)
答案 0 :(得分:7)
好的,我终于对它进行了分类。
我从父组件传入的key
值出现问题。
我曾经将key
建立在随元素变化的索引上。
多数民众赞成我曾经这样做过:
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} />)
一切都开始奏效了。
目前column
值是唯一且与单个条目相关联的时刻 - 稍后将id
字段添加到州是一件好事。