当前位置: 首页 > news >正文

Vue项目中Vuex在util引入,断点存在default

示例代码

// src/store/index.js
import Vue from 'vue';
import Vuex from 'vuex';
……

Vue.use(Vuex);
export default new Vuex.Store({
	……
})
// src/utils/index.js
import store from '@/store' // 导入默认导出的 store
export async function getDict() {
    store.state.userInfo
    store.dispatch.saveDictData(dictData)
}

使用断点查看的时候store属性中存在default,如图:
在这里插入图片描述

1. 为什么 store.state 能访问到数据?

在 Vuex 中,new Vuex.Store() 创建的实例会 自动挂载 state 到根级别,即使你在代码中看到的是 export default 导出整个 Store 实例。
当你使用 import store from '@/store' 时,导入的其实是这个 Store 实例,而 state 是它的一个直接属性。

Store 实例的真实结构

// 通过 console.log(store) 查看实际结构
{
  state: { ... },      // 直接访问的状态树
  getters: { ... },    // 计算属性
  commit: fn,          // 调用 mutations 的方法
  dispatch: fn,        // 调用 actions 的方法
  // ... 其他内部属性
}

所以 store.state 是合法的访问方式,无需通过 default


2. 为什么断点调试时看到的是 default

这是 开发工具(如 Chrome DevTools)的显示问题

  • 当你在调试工具中查看 import store from '@/store' 时,工具会显示模块的默认导出(export default)为 default 属性。
  • 但实际上,store 变量已经指向了 default 的内容(即 Store 实例),所以直接访问 store.state 是等效的。
示意图
// 实际导入后的 store 变量:
store = {
  state: { ... },      // 直接可用
  getters: { ... },
  // ...
}

// 调试工具可能显示为:
store = {
  default: {           // 这是模块的默认导出包装
    state: { ... },
    getters: { ... },
    // ...
  }
}

代码中直接写 store.state 仍然有效,因为 store 已经是解引用后的对象。


3. 正确访问方式

情况 1:直接访问 State

import store from '@/store'

// 正确:直接访问 store.state
const dictData = store.state.userInfo

4. 常见误区

错误尝试

// ❌ 错误!不需要通过 default
const dictData = store.default.state.userInfo
  • 这种写法仅在调试工具中看到的结构里有效,实际代码中会报错。
为什么会混淆?
  • 开发工具的显示可能让人误解需要访问 default,但 Babel/Webpack 在编译时已经处理了 export default 的引用。

总结

你看到的(调试工具)实际代码中的写法
store.default.statestore.state
这是模块导出的显示直接访问实例属性

关键点:

  1. import store from '@/store' 已经解引用了 default,直接使用 store 即可。
  2. state 是 Store 实例的直接属性,无需深层访问。
  3. 调试工具的显示可能具有误导性,以代码实际行为为准。

相关文章:

  • EI复现:蜣螂优化算法变体合集上新,改进正弦算法引导的蜣螂优化算法
  • ts中 构造器
  • 23种设计模式-结构型模式-桥接器
  • 【CF】Day20——Codeforces Round 969 (Div. 2) C
  • STM32 CAN学习(一)
  • linux-- 0. C语言过、Java半静对、Python纯动和C++对+C
  • mapState 函数的用法
  • 7.5 分治:归并:LeetCode 剑指 Offer 51.数组中的逆序对
  • docker 搭建部署知识库XWIKI
  • 【嵌入式学习3】信息安全 - SSH协议
  • JAVA反序列化深入学习(六):CommonsCollections4
  • jQuery 入门到精通
  • Vue中使用antd-table组件时,树形表格展开配置不生效-defaultExpandedRowKeys-默认展开配置不生效
  • 经典算法 排列的字典序问题
  • 为什么需要 Node.js 的 URL 处理工具?
  • JavaScript 函数参数详解
  • 后端实现加解密工具类(记录)
  • MySQL增删改查(CRUD)操作详解与实战指南
  • Java EE(17)——网络原理——IP数据报结构IP协议解析(简述)
  • TabularDataset
  • 手机开发商/上海百度搜索排名优化
  • 公司网站建设公司排名/网络推广渠道排名
  • 设置网站的黑名单怎么做/西安百度关键词推广
  • django做网站/湖南网站建设seo
  • 长沙网站排名团队/win7优化大师免安装版
  • 果洛wap网站建设公司/推广方案的内容有哪些