diff --git a/packages/types/app/index.d.ts b/packages/types/app/index.d.ts index 4d39e45754de..644e168450d9 100644 --- a/packages/types/app/index.d.ts +++ b/packages/types/app/index.d.ts @@ -72,7 +72,7 @@ export interface Context { redirected: boolean next: NextFunction beforeRenderFns: Array<() => any> - beforeRenderHooks: Array<() => any> + beforeSerializeFns: Array<() => any> fetchCounters: Record nuxt: { layout: string @@ -88,7 +88,7 @@ export interface Context { error(params: NuxtError): void nuxtState: NuxtState beforeNuxtRender(fn: (params: { Components: VueRouter['getMatchedComponents'], nuxtState: NuxtState }) => void): void - beforeRender(fn: (params: { Components: VueRouter['getMatchedComponents'], nuxtState: NuxtState }) => void): void + beforeSerialize(fn: (params: { Components: VueRouter['getMatchedComponents'], nuxtState: NuxtState }) => void): void enablePreview?: (previewData?: Record) => void $preview?: Record } diff --git a/packages/vue-app/template/index.js b/packages/vue-app/template/index.js index 204ad71800db..00a20345f8c0 100644 --- a/packages/vue-app/template/index.js +++ b/packages/vue-app/template/index.js @@ -183,7 +183,7 @@ async function createApp(ssrContext, config = {}) { req: ssrContext ? ssrContext.req : undefined, res: ssrContext ? ssrContext.res : undefined, beforeRenderFns: ssrContext ? ssrContext.beforeRenderFns : undefined, - beforeRenderHooks: ssrContext ? ssrContext.beforeRenderHooks : undefined, + beforeSerializeFns: ssrContext ? ssrContext.beforeSerializeFns : undefined, ssrContext }) diff --git a/packages/vue-app/template/server.js b/packages/vue-app/template/server.js index fca65c068172..d81f258fec90 100644 --- a/packages/vue-app/template/server.js +++ b/packages/vue-app/template/server.js @@ -83,10 +83,10 @@ export default async (ssrContext) => { // Create ssrContext.next for simulate next() of beforeEach() when wanted to redirect ssrContext.redirected = false ssrContext.next = createNext(ssrContext) - // deprecated: Used for beforeNuxtRender({ Components, nuxtState }) + // Used for beforeNuxtRender({ Components, nuxtState }) ssrContext.beforeRenderFns = [] - // for beforeRender({ Components, nuxtState }) - ssrContext.beforeRenderHooks = [] + // for beforeSerialize({ Components, nuxtState }) + ssrContext.beforeSerializeFns = [] // Nuxt object (window.{{globals.context}}, defaults to window.__NUXT__) ssrContext.nuxt = { <% if (features.layouts) { %>layout: 'default', <% } %>data: [], <% if (features.fetch) { %>fetch: {}, <% } %>error: null<%= (store ? ', state: null' : '') %>, serverRendered: true, routePath: '' } <% if (features.fetch) { %> @@ -120,12 +120,12 @@ export default async (ssrContext) => { <% } %> const beforeRender = async () => { - // Deprecated: Call beforeNuxtRender() methods + // Call beforeNuxtRender() methods await Promise.all(ssrContext.beforeRenderFns.map(fn => promisify(fn, { Components, nuxtState: ssrContext.nuxt }))) ssrContext.rendered = () => { - // Call beforeRender() hooks - ssrContext.beforeRenderHooks.forEach(fn => fn({ Components, nuxtState: ssrContext.nuxt })) + // Call beforeSerialize() hooks + ssrContext.beforeSerializeFns.forEach(fn => fn({ Components, nuxtState: ssrContext.nuxt })) <% if (store) { %> // Add the state from the vuex store diff --git a/packages/vue-app/template/utils.js b/packages/vue-app/template/utils.js index 9efd7f34d520..2b52d75862fb 100644 --- a/packages/vue-app/template/utils.js +++ b/packages/vue-app/template/utils.js @@ -258,11 +258,8 @@ export async function setContext (app, context) { } } if (process.server) { - app.context.beforeNuxtRender = fn => { - console.warn('`context.beforeNuxtRender(fn)` is deprecated in favour of `context.beforeRender(fn)`. The function updating the `nuxtState` has to be synchronous. Learn more on https://nuxtjs.org/docs/2.x/internals-glossary/context#beforenuxtrender') - context.beforeRenderFns.push(fn) - } - app.context.beforeRender = fn => context.beforeRenderHooks.push(fn) + app.context.beforeNuxtRender = fn => context.beforeRenderFns.push(fn) + app.context.beforeSerialize = fn => context.beforeSerializeFns.push(fn) } if (process.client) { app.context.nuxtState = window.<%= globals.context %> diff --git a/test/dev/basic.ssr.test.js b/test/dev/basic.ssr.test.js index 984d06df933e..38051e0977a7 100644 --- a/test/dev/basic.ssr.test.js +++ b/test/dev/basic.ssr.test.js @@ -207,10 +207,10 @@ describe('basic ssr', () => { expect(window.__NUXT__.beforeNuxtRender).toBe(true) }) - test('/before-render -> check window.__NUXT__.beforeRender = true', async () => { - const window = await nuxt.server.renderAndGetWindow(url('/before-render')) + test('/before-serialize -> check window.__NUXT__.beforeSerialize = true', async () => { + const window = await nuxt.server.renderAndGetWindow(url('/before-serialize')) expect(window.document.title).toBe('Nuxt') - expect(window.__NUXT__.beforeRender).toBe(true) + expect(window.__NUXT__.beforeSerialize).toBe(true); }) test('/error', async () => { diff --git a/test/fixtures/basic/pages/before-render.vue b/test/fixtures/basic/pages/before-serialize.vue similarity index 77% rename from test/fixtures/basic/pages/before-render.vue rename to test/fixtures/basic/pages/before-serialize.vue index c9ac484718ed..75ca5bba866d 100644 --- a/test/fixtures/basic/pages/before-render.vue +++ b/test/fixtures/basic/pages/before-serialize.vue @@ -14,8 +14,8 @@ export default { }, fetch () { if (process.server) { - this.$root.context.beforeRender(({ nuxtState }) => { - nuxtState.beforeRender = true + this.$root.context.beforeSerialize(({ nuxtState }) => { + nuxtState.beforeSerialize = true }) } },