NuxtServer Initと[nuxt]fetch、asyncDataを組み合わせて使用
fetch vs asyncData
fetchとasyncDataは同じSSRデータfetch hookですが、それらの使用状況や呼び出し時間も異なります.そしてこの内容についての情報は、ご確認ください!( 👉🏻 [Nuxt]asyncDataとfetchの違い )
簡単に言えば、両者の違いは:
asyncData
fetch
nuxtServerInit
NuxtLifecycle hooksの呼び出し順序を見ると、asyncDataとfetchの前に呼び出されたhookがいくつかありますが、今日はその中の1つのNuxtServer Initを見て、その使い方を紹介します.
nuxtServer Initとは?
If the action nuxtServerInit is defined in the store and the mode is universal, Nuxt will call it with the context (only from the server-side). It's useful when we have some data on the server we want to give directly to the client-side.
NuxtServerInitは動作で定義され、Nuxt Universalモードでは、Nuxtはコンテキストオブジェクトとともにサーバ側からNuxtServerInit hookを呼び出す.
この機能は、クライアント側にすぐに転送する必要があるサーバ上のデータがある場合に便利です.nuxtServerInitでは、クライアントが画面を描画する前に、サーバ側が処理する必要がある論理を定義できます.
nuxtServer Initの使用方法
この操作を実行するにはstoreのルートにnuxtServer Initを定義する必要があります.store/index.jsまたはstore/actions.jsで定義してください!
nuxtServerInit(vuexContext, context) {
const { commit, state } = vuexContext
const {
app,
store,
route,
params,
query,
env,
isDev,
isHMR,
redirect,
error,
$config
} = context
// Server-side
if (process.server) {
const { req, res, beforeNuxtRender } = context
}
},
nuxtServerInitの最初のパラメータは通常のvuex操作と同じで、vuexContextは2番目のパラメータとしてnuxtのコンテキストオブジェクトに入ります.2番目のパラメータのコンテキストオブジェクトは、
asyncData
、plugins
、middleware
のパラメータcontextと同じです.nuxtServerInitはasyncDataと同じコンテキストオブジェクトを使用できますが、asyncDataはページコンポーネントからのみ呼び出されるため、コンテキストを使用する論理をすべてのページに挿入する場合は、asyncDataをすべてのページコンポーネントに挿入する必要があります.
すべてのページにコンテキストを使用する同じ論理を追加する場合はnuxtServer Initを使用します.
使用例
NuxtServer Initを使用する必要がある場合は、次のようになります.
fetch hookを呼び出す前に、setHeaderに提供される論理をnuxtServer Initを使用する場所に追加する必要があります.
store/actions.js
export default {
nuxtServerInit (_, { req, app, env }) {
if (process.server) {
const isLocalhost = req.headers.host.includes('localhost')
const referer = isLocalhost
? env.TEST_BRAND_URL
: 'https://' + req.headers.host
app.$axios.setHeader('referer', referer)
}
},
}
localhost実行時としてenvに適用されるTEST BRAND URL(req)を使用します.headers.hostはreferとしてaxiosヘッダファイルに注入される.\9660;▼▼▼▼▼▼▼▼▼▼▼▼▼▼\96⚠️
参考資料📕
Reference
この問題について(NuxtServer Initと[nuxt]fetch、asyncDataを組み合わせて使用), 我々は、より多くの情報をここで見つけました https://velog.io/@chaerin00/Nuxt-fetch-asyncData와-함께-NuxtServerInit-활용하기テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol