ROOT CAUSE: - filteredMusik di-calculate ulang setiap render (.filter() tanpa memoization) - currentSong = filteredMusik[currentSongIndex] → object reference baru setiap render - useEffect dependency [currentSong, currentSongIndex] trigger setiap render - useEffect reset setCurrentTime(0) → slider kembali ke awal FIX: 1. useMemo untuk filteredMusik - mencegah re-calculate setiap render 2. useEffect dependency [currentSong?.id, currentSongIndex] - hanya trigger saat lagu benar-benar berubah 3. Hapus semua debug console.log yang tidak diperlukan 4. Simplifikasi seekTo function File Changed: - src/app/darmasaba/(pages)/musik/musik-desa/page.tsx - src/app/darmasaba/(pages)/musik/lib/seek.ts Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
16 lines
336 B
TypeScript
16 lines
336 B
TypeScript
export function seekTo(
|
|
audioRef: React.RefObject<HTMLAudioElement | null>,
|
|
time: number,
|
|
setCurrentTime?: (v: number) => void
|
|
) {
|
|
if (!audioRef.current) return;
|
|
|
|
// Set waktu audio
|
|
audioRef.current.currentTime = time;
|
|
|
|
// Update state jika provided
|
|
if (setCurrentTime) {
|
|
setCurrentTime(Math.round(time));
|
|
}
|
|
}
|