Implement nuxtServerInit Action to load data from server-side on the initial load
See original GitHub issueWhat problem is this solving
Implement something like NuxtServerInit Action, so we can load data from the server-side and give it directly to the client-side on the initial load/render.
Proposed solution
Include an index.js
file inside /stores
with a nuxtServerInit
action which will be called from the server-side on the initial load.
Describe alternatives you’ve considered
The only way I found to do this is using Pinia with Vuex, using the nuxtServerInit
from Vuex:
// store/index.js
import { useSessionStore } from '~/stores/session'
export const actions = {
async nuxtServerInit ({ dispatch }, { req, redirect, $pinia }) {
if (!req.url.includes('/auth/')) {
const store = useSessionStore($pinia)
try {
await store.me() // load user information from the server-side before rendering on client-side
} catch (e) {
redirect('/auth/login') // redirects to login if user is not logged in
}
}
}
}
Issue Analytics
- State:
- Created 2 years ago
- Reactions:21
- Comments:6 (1 by maintainers)
Top Results From Across the Web
How to Implement nuxtServerInit Action to load data from ...
js file inside /stores with a nuxtServerInit action which will be called from the server-side on the initial load. // store/index.js import { ......
Read more >Using nuxtServerInit in Vuex to Fetch Component Data
The nuxtServerInit action is called in universal mode on the sever for every server request (including the initial request) and is used to...
Read more >Server-Side Rendering with Nuxt.js Application - Medium
This method receives the context as the first argument, you can use it to fetch some data and Nuxt.js will merge it with...
Read more >Creating Server-side Rendered Vue.js Apps Using Nuxt.js
When initially loading your website, your browser doesn't receive a complete page to display. Instead, it gets a bunch of pieces and instructions...
Read more >Store directory - Nuxt
Import Vuex,; Add the store option to the root Vue instance. ... state value should always be a function to avoid unwanted shared...
Read more >Top Related Medium Post
No results found
Top Related StackOverflow Question
No results found
Troubleshoot Live Code
Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start FreeTop Related Reddit Thread
No results found
Top Related Hackernoon Post
No results found
Top Related Tweet
No results found
Top Related Dev.to Post
No results found
Top Related Hashnode Post
No results found
Top GitHub Comments
Thanks for this workaround, I would also love to see the feature implemented
There should be a way to add this for both setup and option stores. Maybe a specific name for an action is enough.
One important thing to note is that given the nature of stores in pinia, you need explicitly say somewhere in your server code which stores must run this action as they need to be instantiated on the server. By default, if no store is ever user, no store is ever instantiated and therefore no server init function can run.