nuxt-prefetch
TypeScript icon, indicating that this package has built-in type declarations

1.0.6 • Public • Published

Motivation

Wanting to prefetch at any time without using <NuxtLink/>.

<NuxtLink/> prefetch links when viewing it and navigate fast. Without <NuxtLink/>, router.push() don't prefetch links and slowly navigate pages. Therefore it's necessary to prefetch anywhere and anytime before router.push().

Getting Started

Install package

npm install nuxt-prefetch

Quick Start

pages/index.vue

import { usePrefetchRouter } from "nuxt-prefetch"
export default defineComponent({
  setup() {
    const { prefetch } = usePrefetchRouter('/hoge')
    prefetch()
  },
})

See network tab in Devtools and you look at hoge.js loaded.

Usage

UseCase1:prefetch link after few seconds

export default defineComponent({
  setup() {
    const { prefetch } = usePrefetchRouter('/hoge')
    setTimeout(() => {
      prefetch()
    }, 5000)
  },
})

UseCase2:prefetch before run async function and run then navigation

const {prefetchRouter} = usePrefetchRouter('/hoge')
const execAsyncFunc = () =>
  prefetchRouter(async () => {
    await fetch('https://jsonplaceholder.typicode.com/todos/1')
      .then((response) => response.json()) // then navigate to /hoge 
      .catch((e) => {
        console.log(e)
      })
  })

UseCase3: prefetch all paths

const {prefetchAll} = usePrefetchRouter('/hoge')
prefetchAll(['/hoge', '/fuga'])

UseCase4:prefetch by viewing element

<template>
  <div>
    ↓scroll
    <div style="height: 1000px; width: 100%"></div>
    <button ref="prefetchTarget" @click="runSomeThenRouterPush">
      prefetch by viewing
    </button>
  </div>
</template>
<script lang="ts">
import { defineComponent } from '@nuxtjs/composition-api'
import { usePrefetchRouter } from '~/modules/usePrefetchRouter'

export default defineComponent({
  setup() {
    const { prefetchTarget } = usePrefetchRouter('/hoge')
    return { prefetchTarget }
  },
})
</script>

Option1:use router.push

const {goToPage} = usePrefetchRouter('/hoge')
goToPage() // router.push('/test')

Option2:use VueRouter

const {router} = usePrefetchRouter('/hoge')
router.push('/hoge')

Example

NuxtPrefetchSampleRepository

Package Sidebar

Install

npm i nuxt-prefetch

Weekly Downloads

1

Version

1.0.6

License

MIT

Unpacked Size

9.3 kB

Total Files

9

Last publish

Collaborators

  • humiyan02