typescript - Forhåndslasting av data til butikken ved oppstart i nuxt


Jeg jobber med en app med Nuxt, og jeg forhåndslaster noen ting i nuxtServerInit og putter det inn i store. Det er i orden og det er ikke noe problem.

Jeg har mange flere prosjekter med samme type initial-preload - så jeg begynner å tenke at det er en god idé å legge logikken inn i en modul, og alle mine andre prosjekter kan bare legge til modulen i nuxt.config.js og butikken vil bli forhåndsutfylt... Jeg begynte å lage modulen og oppdaget at det ikke er noen måte å nå butikken på dette tidspunktet, har jeg rett?

Jeg prøvde nuxt.hook('ready', (nuxt) => {...}, men nuxt-parameteret fra callbacken har ingen referanse til store.

Jeg er ny på Nuxt og kanskje jeg overser noen punkter eller håndterer mitt preload-problem på feil måte?

Her er min modules/mymodule.ts

const mymodule: Module<Options> = function (moduleOptions: Options) {
  const { nuxt } = this

  nuxt.hook('ready', async (__nuxt: any) => {
    // __nuxt ... no store reference :(
  })
}
export default mymodule

Svar #1

Vue 2 svar:

Jeg måtte gjøre noe lignende. Jeg tror du bør lete etter butikken i moduleOptions.

I mitt tilfelle, for å få tilgang til butikken, laget jeg en plugin.

// nuxt.conf.js

buildModules: [
    '@namespace/node_modules_route',
]

// plugin.js

// When initializing module in nuxt.config, only the plugin is moved 
// (not deps) so it doesn't resolve via relative import.
// SEE: https://github.com/nuxt/nuxt.js/issues/6169
import SomeStore from '@namespace/node_modules_route/store'

export default function ({ store }) {
  store.registerModule('cxl-session', SomeStore())
}

// module.js

module.exports = async function (moduleOptions) {
  const options = {
    ...this.options['my-plugin'],
    ...moduleOptions,
  }

  this.addPlugin({
    src: resolve(__dirname, 'plugin.js'),
    fileName: 'my-plugin.js',
    options,
  })
}

module.exports.meta = require('../package.json')