uni-app 4.29版本hx无法使用vuex 从vuex导入的useStore函数报错不是一个函数
uni-app 4.29版本hx无法使用vuex 从vuex导入的useStore函数报错不是一个函数
项目信息 | 详情 |
---|---|
产品分类 | uniapp/App |
PC开发环境操作系统 | Windows |
PC开发环境操作系统版本号 | Windows 10 家庭中文版 |
HBuilderX类型 | 正式 |
HBuilderX版本号 | 4.29 |
手机系统 | Android |
手机系统版本号 | Android 13 |
手机厂商 | 华为 |
手机机型 | 荣耀90 gt |
页面类型 | nvue |
vue版本 | vue3 |
打包方式 | 云端 |
项目创建方式 | HBuilderX |
示例代码:
import vuex,{useStore,mapMutations} from "vuex"
setup() {
const store = useStore()
console.log("自定义打印:",store,store.state);
console.log("setup");
console.log(useStore);
const test = ref("setup周期测试")
console.log(vuex);
console.log(test);
return {test}
}
操作步骤:
- 下载hello-uniapp项目,打开pages/tabBar/componentcomponent.nvue文件
- 导入import vuex,{useStore,mapMutations} from “vuex”
- 在setup生命周期里
setup() { const store = useStore() console.log("自定义打印:",store,store.state); console.log("setup"); console.log(useStore); const test = ref("setup周期测试") console.log(vuex); console.log(test); return {test} }
预期结果:
正常使用vuex里的数据
实际结果:
报错
(0 , import_vuex.useStore) is not a function
TypeError: (0 , import_vuex.useStore) is not a function
at Proxy.onLoad (pages/tabBar/component/component.js.nvue:260:121)
at pages/tabBar/component/component.js.nvue:430:9
at pages/tabBar/component/component.js.nvue:432:3
bug描述:
在setup周期里使用useStore报错:
(0 , import_vuex.useStore) is not a function
TypeError: (0 , import_vuex.useStore) is not a function
at Proxy.onLoad (pages/tabBar/component/component.js.nvue:260:121)
at pages/tabBar/component/component.js.nvue:430:9
at pages/tabBar/component/component.js.nvue:432:3
// 页面路径:main.js
import App from ‘./App’
import store from ‘./store’
import {createSSRApp} from ‘vue’
import Vuex from “vuex”;
export function createApp() {
const app = createSSRApp(App)
app.use(store)
return {
app,
// Vuex // 注意,如果 nvue 使用 vuex 的各种map工具方法时,必须 return Vuex
}
}
这是在hello-uniapp测试useStore时踩了一个坑,nvue页面使用vuex记得在返回Vuex,不然vuex库导出的所有函数都会是undefined
useStore的错误是在nvue页面,可以先改成vue页面
在uni-app 4.29版本中遇到无法使用vuex,并且从vuex导入的useStore
函数报错“不是一个函数”的问题,通常可能是由于几个常见的原因导致的。以下是一些可能的解决方案和相关的代码示例,帮助你排查和解决这个问题。
1. 确保Vuex版本正确
首先,确保你安装的Vuex版本与uni-app兼容。uni-app通常支持Vuex 4.x版本。你可以通过以下命令查看和更新Vuex版本:
npm list vuex
npm install vuex@4 --save
2. 正确配置Vuex Store
确保你的Vuex store配置正确。以下是一个基本的Vuex store配置示例:
// store/index.js
import { createStore } from 'vuex';
const store = createStore({
state: {
count: 0
},
mutations: {
increment(state) {
state.count++;
}
},
actions: {
increment({ commit }) {
commit('increment');
}
},
getters: {
count: state => state.count
}
});
export default store;
3. 在uni-app中引入并使用Vuex Store
确保你在main.js中正确引入了Vuex store,并且使用了createApp
方法来创建Vue实例:
// main.js
import { createApp } from 'vue';
import App from './App.vue';
import store from './store';
const app = createApp(App);
app.use(store);
app.mount('#app');
4. 使用useStore
钩子
在Vue 3中,你可以使用useStore
钩子来访问store。确保你在组件中正确使用了这个钩子:
<template>
<view>
<text>{{ count }}</text>
<button @click="increment">Increment</button>
</view>
</template>
<script>
import { computed } from 'vue';
import { useStore } from 'vuex';
export default {
setup() {
const store = useStore();
const count = computed(() => store.state.count);
const increment = () => {
store.dispatch('increment');
};
return {
count,
increment
};
}
};
</script>
5. 检查导入路径
确保你的导入路径是正确的。如果useStore
报错“不是一个函数”,可能是因为导入路径错误或者Vuex没有正确安装。
通过上述步骤,你应该能够解决uni-app中Vuex useStore
函数报错的问题。如果问题仍然存在,请检查是否有其他依赖冲突或配置错误。