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')
