首页 > 其他分享 >Nuxt2项目Js文件使用Vuex

Nuxt2项目Js文件使用Vuex

时间:2024-04-29 16:33:34浏览次数:18  
标签:name Nuxt2 Js state context Vuex store nuxt

背景

当前项目是Nuxt2框架,建立了Vuex仓库。通过返回一个函数的形式,建立Vuex

代码如下

import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)
const store = () =>
	new Vuex.Store({
		state: {
			name: 'abc'
		},
		mutations: {
			setName(state, data) {
				state.name = data
			}
		}
	})
export default store

问题

在单独的js文件中使用该store

一开始做法:因为返回一个方法,所以使用vuex的时候也要用store()的方式调用,结果出错,name永远都是初始值。原因是每次调用store()都会执行一次new Vuex.Store(),因此每次得到的都是一个新的store,导致name用于都是初始值

import store from '@store'
const name = store().state.name

解决

通过nuxt的上下文来提供store对象,该对象被nuxt框架处理后放入到上下文中,并且始终为同一个store

this.$nuxt.context可以获取到nuxt全局上下文

//js文件
export const log = (context) => {
    const store = context.store
    console.log(store.state.name)
}

//vue文件
methods: {
    fn() {
        this.$store.commit('setName', 12345)
        log(this.$nuxt.context)
    }
}

 

标签:name,Nuxt2,Js,state,context,Vuex,store,nuxt
From: https://www.cnblogs.com/karle/p/18166074

相关文章

  • js 链式调用
    functionarrany(name){lettasks=[]tasks.push(()=>{console.log(name)})functionwait(duration){tasks.push(()=>newPromise(resolve=>{setTimeout(resolve,duration)}))returnthis}functionexecute(......
  • FETCH JSON ERROR IN MIK-SSR-WEB
    背景在日常巡检时发现,MIK-SSR-WEB的Grafana监控中出现500的异常响应。原因分析1.Grafana监控在监控面板中发现,503响应不为0  2.Skywalkingl链路在Skywalking中过滤错误响应,发现所以异常的URL均为/mik-web-static/map/2c-prd/released-menu/michaels_menu......
  • jsp和servlet写的增删改查
    JavaEE架构程序设计实验作业一、实验项目功能完成了项目的登录和注册学生信息管理的增删改查学生选课信息的增删改查学生成绩管理的增删改查  二、实验过程实验过程还是比较曲折的,因为之前没有写过完整的Servlet程序,不知道如何将表单提交到Servlet,一开始写的都......
  • Pod monitoring of Nodejs
    一、Nodejs添加接口1、nextjs用法安装包prom-client,在ping同一目录层级创建接口api/ssr/metrics比如首页https://mik.dev.platform.michaels.com/api/ssr/metricsdc项目https://mik.dev.platform.michaels.com/api/ssr/dc/metrics import{register,collectDefaultMetri......
  • js实现身份证精确校验
    之前我们前端对身份证的校验,都是用的正则校验legalTex=/^\d{6}(18|19|20)\d{2}(0\d|10|11|12)([0-2]\d|30|31)\d{3}(\d|X|x)$/但是这个正则的含义仅仅表示身份证号码为15位或者18位,15位时全为数字,18位前17位为数字,最后一位是校验位,可能为数字或字符X这样的校验是不精确的,你随......
  • 揭秘Python中的JSON数据格式与Requests模块
    From: https://mp.weixin.qq.com/s/QgGyn2efYtVKI65RwXoiEA------------------------------------------------------------------------------------importpytestimportjsonimportrequestsfromrequests.authimportHTTPBasicAuthfromrequests.adaptersimportHTTPA......
  • js逆向实战之企名片返回数据解密
    url:https://www.qimingpian.com/finosda/project/pinvestment分析过程抓流量包,发现回显数据都是加密的。想要找到解密逻辑,可以参考上一篇文章的思路,直接搜索拦截器。有五处,只需要看响应拦截器即可。第一处响应拦截器可以看到e.data,有经验的人大概就可以判断出来......
  • QJsonArray对其对象排序
    #include<QCoreApplication>#include<QJsonArray>#include<QJsonObject>#include<QDebug>#include<QList>//比较函数,用于指定排序规则boolcompareJsonObjects(constQJsonObject&obj1,constQJsonObject&obj2){returnobj1......
  • Nodejs中npm i 与npm ci的区别
    npmci与npmi主要有以下的区别:1.依赖的package不同#npmi依赖package.json#npmci依赖package-lock.json当package-lock.json中的依赖于package.json不一致时,npmci退出但不会修改package-lock.json。2.安装特点差异'''npmci只可以一次性的安装整个项目依赖,但无......
  • js设置网页标题、关键字、描述
    import.meta.env.VITE...Vue.js3.x获取环境变量letdocTitle=import.meta.env.VITE_TITLE;letdocDesc=import.meta.env.VITE_DESCRIPT;letdocKeywords=import.meta.env.VITE_KEYWORDS;//设置页面标题document.title=docTitle;//设置页......