react-native-component / react-native-smart-sortable-sudoku-grid

A smart sortable sudoku grid for React Native apps
MIT License
107 stars 42 forks source link

拖拽的时候如果速度快,就会发生数据错误 #26

Open 39499740 opened 6 years ago

39499740 commented 6 years ago

比如一排有4个按钮(按钮1 按钮2 按钮3 按钮4),第四个拖拽到第一个,如果慢慢来,没有任何问题,如果动作快一点,按钮1就没有了,4个按钮变成了(按钮4 按钮2 按钮3 按钮4) 不知道是哪里的BUG

mf-fengsheng commented 6 years ago

https://github.com/mf-fengsheng/react-native-smart-sortable-sudoku-grid 我在这里修复了这个bug

39499740 commented 6 years ago

@mf-fengsheng 怎么安装你这个?

mf-fengsheng commented 6 years ago

package.json里的 “react-native-smart-sortable-sudoku-grid“: "^1.0.5" 改写成 "react-native-smart-sortable-sudoku-grid": "mf-fengsheng/react-native-smart-sortable-sudoku-grid"

39499740 commented 6 years ago

@mf-fengsheng 不知道你那里有没有这样的情况,比如开始的时候上面只有一排,当我在上面添加元素,上面换行以后,点完成按钮上面又会变成一排

zgatrying commented 6 years ago

源码Utils.js内以下部分的代码和注释是有误的。

            case right: //currentCellIndex > hoverCellIndex
                cellIndex = hoverCellIndex - i //for supporting remove cell logic
                animationType = leftTranslation
                break
            case left:  //currentCellIndex < hoverCellIndex
                cellIndex = hoverCellIndex
                animationType = rightTranslation
                break

改为

            case right: //currentCellIndex < hoverCellIndex
                cellIndex = hoverCellIndex - i 
                animationType = leftTranslation
                break
            case left:  //currentCellIndex > hoverCellIndex
                cellIndex = hoverCellIndex + i
                animationType = rightTranslation
                break

bug出现的原因:

拖动过快导致Math.abs(currentCellIndex-hoverIndex) > 1, 而currentCellIndex < hoverCellIndex时cellIndex值是固定的hoverIndex,问题就出在这里。即从第二个需要动作的cell开始,对应的component都成了hoverCell。

M45ter commented 5 years ago

@mf-fengsheng @zgatrying 外层套ScrollView时,进入编辑模式拖动问题比较多,有解决方案吗