使用useMockScrollDrag来模拟滚动拖拽。 Base 中的 ScrollView就使用了这个钩子
使用用例
在顶层作用域使用ref
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
在onMounted钩子中传入元素实例调用
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
类型定义
function useMockScrollDrag(scrollRef: Ref<HTMLElement> | HTMLElement, options: MockScrollDragOptions): {
mouseState: Ref<'up' | 'move' | 'down'>;
}
interface MockScrollDragOptions {
mouseDown?: (e: MouseEvent & { payload?: object }) => void;
mouseMove?: (
e: MouseEvent & { payload?: object },
mouseState: 'up' | 'move' | 'down'
) => void;
mouseUp?: (e: MouseEvent & { payload?: object }) => void;
moveMethod?: (
crtPos: MousePositionInfo,
pvePos: MousePositionInfo,
e: MouseEvent & { payload?: object }
) => void | boolean;
stopPropagation?: (e: MouseEvent & { payload?: object }) => boolean;
debug?: boolean;
}
interface MousePositionInfo {
clientX: number;
clientY: number;
movementX: number;
movementY: number;
offsetX: number;
offsetY: number;
pageX: number;
pageY: number;
calcMovementX: number;
calcMovementY: number;
timeStamp: number;
}
参数说明
| 参数名 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| scrollRef | Ref<HTMLElement> | HTMLElement | 滚动容器 ref | |
| options | MockScrollDragOptions | 配置项 |
配置项额外说明
| 参数名 | 说明 |
|---|---|
| moveMethod | 显示返回 false 阻止本次移动 |
| stopPropagation | 显示返回 false 阻止冒泡 |
| debug | 启用true会在控制台输出ref |