Setting the file. One moment.
Subchapter 7.21
references/core-global-context.mdMarkdown3 KBView on GitHub
Access navigation, slide info, and configuration programmatically.
Available in slides and components:
Page {{ $page }} of {{ $nav.total }}
Title: {{ $slidev.configs.title }}Navigation state and controls:
| Property | Type | Description |
|---|---|---|
$nav.currentPage | number | Current page (1-indexed) |
$nav.currentLayout | string | Current layout name |
$nav.total | number | Total slides |
$nav.isPresenter | boolean | In presenter mode |
$nav.next() | function | Next click/slide |
$nav.prev() | function | Previous click/slide |
$nav.nextSlide() | function | Next slide |
$nav.prevSlide() | function | Previous slide |
$nav.go(n) | function | Go to slide n |
Global context:
| Property | Description |
|---|---|
$slidev.configs | Project config (title, etc.) |
$slidev.themeConfigs | Theme config |
Current slide frontmatter:
Layout: {{ $frontmatter.layout }}Current click count on slide.
Current page number (1-indexed).
Current render context:
'slide' - Normal slide view'overview' - Overview mode'presenter' - Presenter mode'previewNext' - Next slide previewImport from @slidev/client:
import {
useNav,
useDarkMode,
useIsSlideActive,
useSlideContext,
onSlideEnter,
onSlideLeave,
} from '@slidev/client'const nav = useNav()
nav.next()
nav.go(5)
console.log(nav.currentPage)const { isDark, toggle } = useDarkMode()const isActive = useIsSlideActive()
// Returns ref<boolean>const { $page, $clicks, $frontmatter } = useSlideContext()import { onSlideEnter, onSlideLeave } from '@slidev/client'
onSlideEnter((to, from) => {
// Slide became active
startAnimation()
})
onSlideLeave((to, from) => {
// Slide became inactive
cleanup()
})Important: Don’t use onMounted/onUnmounted in slides - component instance persists. Use onSlideEnter/onSlideLeave instead.
<!-- Show only in presenter mode -->
<div v-if="$nav.isPresenter">
Presenter notes
</div>
<!-- Hide on cover slide -->
<footer v-if="$nav.currentLayout !== 'cover'">
Page {{ $nav.currentPage }}
</footer>
<!-- Different content by context -->
<template v-if="$renderContext === 'slide'">
Normal view
</template>
<template v-else-if="$renderContext === 'presenter'">
Presenter view
</template>import type { TocItem } from '@slidev/types'