问题描述:
在uni-app项目中,使用vuex;
在store/index.js中设置好了state后(简化代码如下):
import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)
const store = new Vuex.Store({
state: {
hasLogin: 0
}
})
export default store
在其他页面中访问state(简化代码如下):
onLoad() {
if (!this.$store.state.hasLogin) {
uni.navigateTo({
url: '/pages/login/login'
})
}
}
报错
TypeError: Cannot read property 'state' of undefined
;
问题分析
报错信息为state
未定义,
在main.js
中增加代码console.log('enter main')
,
在访问state的页面中增加console.log('enter component')
,
命令行输出结果:
enter component at pages/tabBar/component/component.nvue:173
enter main at main.js:22
可见是文件启动顺序不对,理论上应该先在main.js中注册vuex,然后再在其他页面中访问store中的数据,但是现在反了过来;
结论
查阅官网资料,推测是在nvue中不能使用vuex,于是只能使用uni-app中的登陆模板。