解决组件丢失

main
king 1 year ago
parent 9119223c80
commit ba21531bba
  1. 24
      src/components/video/video.tsx
  2. 6
      src/pages/business/videoInfo/videoInfo.tsx

@ -7,7 +7,12 @@ import unique_ident from "@/hooks/unique_ident";
const deviation: number = 1
const HVideo: FC<HVideoOptions> = (opt: HVideoOptions) => {
const video = Taro.createVideoContext('myVideo')
let video
try {
video = Taro.createVideoContext('myVideo')
} catch (e) {
}
const [currentTime, setCurrentTime] = useState(0)
function onTimeUpdate(event: BaseEventOrig<VideoProps.onTimeUpdateEventDetail>) {
@ -15,7 +20,7 @@ const HVideo: FC<HVideoOptions> = (opt: HVideoOptions) => {
const time = event.detail.currentTime
/** 前进回退 */
if (currentTime + deviation < time) {
video.seek(currentTime)
video?.seek(currentTime)
return
}
setCurrentTime(time)
@ -23,9 +28,9 @@ const HVideo: FC<HVideoOptions> = (opt: HVideoOptions) => {
/** 判断是否进入断点 */
opt.breakpoint.forEach(d => {
if (time < d + deviation && time > d - deviation) {
video.exitFullScreen()
video.pause()
video.seek(d - deviation)
video?.exitFullScreen()
video?.pause()
video?.seek(d - deviation)
opt.onBreakpoint(d)
return
}
@ -33,8 +38,8 @@ const HVideo: FC<HVideoOptions> = (opt: HVideoOptions) => {
}
opt.setTime((time: number) => {
video.seek(time)
video.play()
video?.seek(time)
video?.play()
})
function onEnded() {
@ -42,12 +47,13 @@ const HVideo: FC<HVideoOptions> = (opt: HVideoOptions) => {
if (currentTime + 1 > opt.duration) {
opt.onEnded()
} else {
video.seek(currentTime)
video.play()
video?.seek(currentTime)
video?.play()
}
}
Taro.useUnload(() => {
video?.stop()
unique_ident.put(Number(currentTime.toFixed(2)), Date.now())
})

@ -6,8 +6,6 @@ import Catalogue from "./components/catalogue";
import Course from "./components/course";
import Taro from "@tarojs/taro";
import eventsIndex from "@/hooks/eventsIndex";
// import eventsIndex from "@/hooks/eventsIndex";
const VideoInfo: FC = () => {
const {id, depId} = Taro.getCurrentInstance()?.router?.params as any
@ -21,8 +19,7 @@ const VideoInfo: FC = () => {
if (res) {
setData(res)
}
/** 用于自动播放 判断当前课程是否完成 */
if (playId) {
if (playId) { // 用于自动播放 判断当前课程是否完成
currentVideo(res)
}
}
@ -90,6 +87,7 @@ const VideoInfo: FC = () => {
})
return (
<>
<View className='content'>

Loading…
Cancel
Save