描述:列表可以完成拖拽排序
此組件是根據支付寶原生文檔改編成taro-vue3的形式,只保留了拖拽的部分,其他功能都去除了,測試下來可以兼容支付寶和微信小程序。
支付寶原生文檔: https://opendocs.alipay.com/support/01rb28
一、布局
分成三塊:list, 拖拽按鈕浮層,拖拽時移動clone數據的movable-area/movable-view(movable-view里面的item和list中的一樣)
二、思路
- 拖拽浮層上的事件touchstart、touchmove、touchend,用event.type判斷
- event.type = touchstart時,根據觸發點的pageX、pageY獲取當前的item, 在根據pageY算出movable-view的y(x=0)
- event.type = touchmove時
a. 根據不斷變化的pageY計算movable-view的y
b. 根據clientY判斷是向上還是向下滑動及所到item的處理 - event.type = touchend時,確定list數據,隱藏movable-view部分
三、原生轉taro-vue3時的差異
1、touch事件的大小寫區別
2、touch事件中獲取坐標
3、樣式中的高度-- 有幾個固定高度
a. 如果list上方還有其他元素,這個元素的高度必須是固定的
b. list中item的高度必須是固定的
c. movable-view和里面的item高度必須是固定的
d. 這個組件的list不長,所以把scroll-view高度也固定了,如果超過一屏,可以看原生中的處理