Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
京东前端
nutui-react
提交
d57f997c
N
nutui-react
项目概览
京东前端
/
nutui-react
通知
0
Star
2
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
N
nutui-react
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
未验证
提交
d57f997c
编写于
8月 23, 2022
作者:
Y
yangxiaolu1993
提交者:
GitHub
8月 23, 2022
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix: 解决Picker滚动结束延迟触发事件问题 (#218)
上级
5e2cef80
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
13 addition
and
7 deletion
+13
-7
src/packages/picker/demo.tsx
src/packages/picker/demo.tsx
+1
-0
src/packages/picker/doc.md
src/packages/picker/doc.md
+3
-1
src/packages/picker/picker.tsx
src/packages/picker/picker.tsx
+3
-0
src/packages/picker/pickerSlot.tsx
src/packages/picker/pickerSlot.tsx
+6
-6
未找到文件。
src/packages/picker/demo.tsx
浏览文件 @
d57f997c
...
...
@@ -325,6 +325,7 @@ const PickerDemo = () => {
onConfirm
=
{
(
values
,
list
)
=>
confirmPicker
(
'
tile
'
,
values
,
list
)
}
defaultValueData
=
{
defaultValue
}
threeDimensional
=
{
false
}
swipeDuration
=
{
1000
}
onClose
=
{
()
=>
setIsVisible6
(
false
)
}
onChange
=
{
changePicker
}
/>
...
...
src/packages/picker/doc.md
浏览文件 @
d57f997c
...
...
@@ -170,7 +170,7 @@ export default App;
### 平铺展示
通过设置
`threeDimensional`
取消 3D 展示效果
通过设置
`threeDimensional`
取消 3D 展示效果
,并且通过设置
`swipeDuration`
可以控制快速滚动的时长。
:::demo
```
tsx
...
...
@@ -210,6 +210,7 @@ const App = () => {
isVisible
=
{
isVisible
}
listData
=
{
listData
}
threeDimensional
=
{
false
}
swipeDuration
=
{
1000
}
onConfirm
=
{
(
values
,
list
)
=>
confirmPicker
(
values
,
list
)
}
onClose
=
{
()
=>
setIsVisible
(
false
)
}
/>
...
...
@@ -370,6 +371,7 @@ export default App;
| listData | 列表数据 | Array | [] |
| defaultValueData | 默认选中 | Array | [] |
| threeDimensional
`v1.2.2`
| 是否开启3D效果 | Boolean | true |
| swipeDuration
`v1.2.3`
| 快速滑动时惯性滚动的时长,单位 ms | String
\|
Number | 1000 |
## listData 数据结构
...
...
src/packages/picker/picker.tsx
浏览文件 @
d57f997c
...
...
@@ -25,6 +25,7 @@ export interface IPickerProps {
className
?:
''
style
?:
React
.
CSSProperties
threeDimensional
?:
boolean
swipeDuration
:
number
|
string
onConfirm
?:
(
selectedValue
:
(
string
|
number
)[],
selectedOptions
:
PickerOption
[]
...
...
@@ -60,6 +61,7 @@ const InternalPicker: ForwardRefRenderFunction<unknown, Partial<IPickerProps>> =
className
,
style
,
threeDimensional
,
swipeDuration
,
...
rest
}
=
props
...
...
@@ -272,6 +274,7 @@ const InternalPicker: ForwardRefRenderFunction<unknown, Partial<IPickerProps>> =
chooseItem
=
{
(
value
:
PickerOption
,
index
:
number
)
=>
chooseItem
(
value
,
index
)
}
swipeDuration
=
{
swipeDuration
}
key
=
{
index
}
keyIndex
=
{
index
}
/>
...
...
src/packages/picker/pickerSlot.tsx
浏览文件 @
d57f997c
...
...
@@ -12,6 +12,7 @@ interface IPickerSlotProps {
defaultValue
?:
string
|
number
listData
?:
PickerOption
[]
threeDimensional
:
boolean
swipeDuration
:
number
|
string
chooseItem
?:
(
val
:
PickerOption
,
idx
:
number
)
=>
void
}
...
...
@@ -24,10 +25,13 @@ const InternalPickerSlot: ForwardRefRenderFunction<
defaultValue
,
listData
=
[],
threeDimensional
=
true
,
swipeDuration
=
1000
,
chooseItem
,
}
=
props
const
touch
=
useTouch
()
const
DEFAULT_DURATION
=
200
// 触发惯性滑动条件:
// 在手指离开屏幕时,如果和上一次 move 时的间隔小于 `MOMENTUM_TIME` 且 move
// 距离大于 `MOMENTUM_DISTANCE` 时,执行惯性滑动
...
...
@@ -58,17 +62,13 @@ const InternalPickerSlot: ForwardRefRenderFunction<
const
setTransform
=
(
translateY
=
0
,
type
:
string
,
time
=
1000
,
time
=
DEFAULT_DURATION
,
deg
:
string
)
=>
{
let
nTime
=
time
if
(
type
!==
'
end
'
)
{
nTime
=
0
}
if
(
threeDimensional
)
{
// listRef.current.style.webkitTransition = `transform ${nTime}ms cubic-bezier(0.17, 0.89, 0.45, 1)`
// listRef.current.style.webkitTransform = `translate3d(0, ${translateY}px, 0)`
}
if
(
threeDimensional
)
{
rollerRef
.
current
.
style
.
webkitTransform
=
`rotate3d(1, 0, 0,
${
deg
}
)`
...
...
@@ -147,7 +147,7 @@ const InternalPickerSlot: ForwardRefRenderFunction<
if
(
moveTime
<=
INERTIA_TIME
&&
Math
.
abs
(
move
)
>
INERTIA_DISTANCE
)
{
// 惯性滚动
const
distance
=
momentum
(
move
,
moveTime
)
setMove
(
distance
,
'
end
'
,
moveTime
+
1000
)
setMove
(
distance
,
'
end
'
,
+
swipeDuration
)
}
else
{
setMove
(
move
,
'
end
'
)
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录