Vue中操作真实DOM导致VDom和真实DOM不一致之Vue中使用Sortable

参考:

Vue中使用Sortable

场景:

使用sortable进行拖拽后,视图发生了改变,但是Vue中负责渲染视图的数据和视图不一致,更新渲染数据后会导致重新渲染,VDOM和真实dom不一致又会导致,渲染后把拖拽的视图结果复原。

解决方案:

sortable只负责采集信息,采集信息结束后恢复由于采集信息导致的视图变化,确保视图始终由Vue控制渲染

const targetContainer = document.getElementsByClassName('ant-spin-container')
const _this = this
/* eslint-disable no-new */
const itemContainer = targetContainer[0]
new Sortable(itemContainer, {
  animation: 150, // 排序动画的时间
  forceFallback: false, // 使用h5原生拖放
  // 排序发生变化后执行
  onUpdate: event => {
	const newIndex = event.newIndex
	const oldIndex = event.oldIndex
	const newItem = itemContainer.children[newIndex]
	const oldItem = itemContainer.children[oldIndex]
	// 修改数据顺序
	const tempData = _this.data.map(item => ({ id: it
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值