2020/12/10
[NuxtJS]NuxtJSでstoreを使ったpluginを作ってみた
概要
NuxtJSのプラグインの中にvuexを使う場合のお話です。
例えば、ローディング中みたいなステータスを更新したい処理(アプリケーション全体でよく使うstateを更新する処理)があるとして
それを呼び出すのに、
- vuexのmutationをimportしてきて…
- methodで定義して
- mutationを呼び出す
みたいな箇所が冗長だったので、スッキリさせたいなとおもい実装しました。以下のようになります。
実装
store/app.js
export const state = () => ({
loading: false,
})
export const mutations = {
turnLoadingOn(state) {
state.loading = true
},
turnLoadingOff(state) {
state.loading = false
},
}
plugins/app.js
export default ({ store }, inject) => {
const app = {
turnLoadingOn: () => {
store.commit('app/turnLoadingOn')
},
turnLoadingOff: () => {
store.commit('app/turnLoadingOff')
},
}
inject('app', app)
}
pages/**/*.vue(任意のページでの使い方)
<script>
export default {
methods: {
async submit() {
this.$app.turnLoadingOn()
try {
// do something
} finally {
this.$app.turnLoadingOff()
}
},
}
以上になります。
関連する記事
【1行】JavascriptでCookieの全削除
たまにやるCookie全削除のJavascriptです
Nuxt2からNuxt3への移行とNextJSとNuxt3の比較について
弊社ホームページとブログサイトをNuxt2からNuxt3ベースに移行しました。
[NextJs]Google Mapでマーカーをセンターに表示するコンポーネントの作成
NextJsアプリ内で、Google Mapを表示して、中心にマーカーを配置するコンポーネントを作成しました。
[Next.js]client側のみで読み込むcomponent(SSRのエラーを回避)
組織図を描画するreactライブラリ`react-organizational-chart`をサーバー側で呼び込む際にエラーになる方法に対処しました