-
Notifications
You must be signed in to change notification settings - Fork 266
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat(Video): web h5 下支持 ref 调用 #2852
Changes from 4 commits
c1538ab
5fed466
aae7ae7
b7c300d
6051b4c
ad3dd5c
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
import { EmptyAction } from './types' | ||
|
||
export const getButtonType = (actions: Array<EmptyAction>, index: number) => { | ||
const action = actions[index] | ||
if (!actions || actions.length === 0) return 'default' | ||
if (action.type) return action.type | ||
actions.length > 1 && index === 0 ? 'default' : 'primary' | ||
} |
Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
@@ -1,4 +1,4 @@ | ||||||||||||||||||||||||||||||||||||||||||
import React, { useEffect, useRef, FunctionComponent } from 'react' | ||||||||||||||||||||||||||||||||||||||||||
import React, { useEffect, useRef } from 'react' | ||||||||||||||||||||||||||||||||||||||||||
import classNames from 'classnames' | ||||||||||||||||||||||||||||||||||||||||||
import { BasicComponent, ComponentDefaults } from '@/utils/typings' | ||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||
|
@@ -36,11 +36,17 @@ const defaultProps = { | |||||||||||||||||||||||||||||||||||||||||
}, | ||||||||||||||||||||||||||||||||||||||||||
} as VideoProps | ||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||
export type VideoRef = { | ||||||||||||||||||||||||||||||||||||||||||
pause: () => void | ||||||||||||||||||||||||||||||||||||||||||
play: () => void | ||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||
const classPrefix = `nut-video` | ||||||||||||||||||||||||||||||||||||||||||
export const Video: FunctionComponent< | ||||||||||||||||||||||||||||||||||||||||||
export const Video = React.forwardRef< | ||||||||||||||||||||||||||||||||||||||||||
VideoRef, | ||||||||||||||||||||||||||||||||||||||||||
Partial<VideoProps> & | ||||||||||||||||||||||||||||||||||||||||||
Omit<React.HTMLAttributes<HTMLDivElement>, 'onPause' | 'onPlay'> | ||||||||||||||||||||||||||||||||||||||||||
> = (props) => { | ||||||||||||||||||||||||||||||||||||||||||
>((props, ref) => { | ||||||||||||||||||||||||||||||||||||||||||
const { | ||||||||||||||||||||||||||||||||||||||||||
children, | ||||||||||||||||||||||||||||||||||||||||||
source, | ||||||||||||||||||||||||||||||||||||||||||
|
@@ -88,6 +94,18 @@ export const Video: FunctionComponent< | |||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||
const pause = () => { | ||||||||||||||||||||||||||||||||||||||||||
rootRef?.current?.pause() | ||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||
const play = () => { | ||||||||||||||||||||||||||||||||||||||||||
rootRef?.current?.play() | ||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||
Comment on lines
+97
to
+102
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🛠️ Refactor suggestion 建议增加错误处理!
建议修改实现如下: - const pause = () => {
- rootRef?.current?.pause()
- }
- const play = () => {
- rootRef?.current?.play()
- }
+ const pause = async () => {
+ try {
+ await rootRef?.current?.pause()
+ } catch (error) {
+ console.error('视频暂停失败:', error)
+ }
+ }
+ const play = async () => {
+ try {
+ await rootRef?.current?.play()
+ } catch (error) {
+ console.error('视频播放失败:', error)
+ }
+ } 📝 Committable suggestion
Suggested change
🧰 Tools🪛 GitHub Check: codecov/patch[warning] 98-99: src/packages/video/video.tsx#L98-L99 [warning] 101-102: src/packages/video/video.tsx#L101-L102 |
||||||||||||||||||||||||||||||||||||||||||
React.useImperativeHandle(ref, () => ({ | ||||||||||||||||||||||||||||||||||||||||||
pause, | ||||||||||||||||||||||||||||||||||||||||||
play, | ||||||||||||||||||||||||||||||||||||||||||
})) | ||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||
Comment on lines
+97
to
+107
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 需要添加单元测试! 新增的 ref 方法缺少测试覆盖,建议添加相应的单元测试用例。 建议添加以下测试场景:
需要我帮您生成测试用例代码吗? 🧰 Tools🪛 GitHub Check: codecov/patch[warning] 98-99: src/packages/video/video.tsx#L98-L99 [warning] 101-102: src/packages/video/video.tsx#L101-L102 [warning] 105-106: src/packages/video/video.tsx#L105-L106 |
||||||||||||||||||||||||||||||||||||||||||
return ( | ||||||||||||||||||||||||||||||||||||||||||
<div className={classes} {...restProps}> | ||||||||||||||||||||||||||||||||||||||||||
<video | ||||||||||||||||||||||||||||||||||||||||||
|
@@ -105,6 +123,6 @@ export const Video: FunctionComponent< | |||||||||||||||||||||||||||||||||||||||||
</video> | ||||||||||||||||||||||||||||||||||||||||||
</div> | ||||||||||||||||||||||||||||||||||||||||||
) | ||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||
}) | ||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||
Video.displayName = 'NutVideo' |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🛠️ Refactor suggestion
建议优化定时器实现
当前实现存在以下几个问题:
建议按照以下方式重构:
📝 Committable suggestion