uniapp vuex 使用mapState调用取不到值。

本文讲述了在uni-app项目中使用Vuex时,如何解决在index.vue组件中通过mapState映射状态但无法获取到值的问题,涉及Vuex的状态管理及组件间通信的要点。

uniapp vuex 使用mapState调用取不到值。

uni-app自带vuex,所以正确引入即可。
1、新建uniapp项目时,根目录会自动创建store文件夹存放vuex
2、手动创建index.js

import Vue from 'vue'
import Vuex from 'vuex'

//挂载Vuex
Vue.use(Vuex)

//创建VueX对象
const store = new Vuex.Store({
	state: {   //全局变量定义处
		uerInfo: {},
		hasLogin: false,
		forcedLogin: false,//是否强制登录
	},
	mutations: {    //全局方法定义处
		login(state, user) {
			state.hasLogin = true;
			state.uerInfo = user;
			uni.setStorage({//将用户信息保存在本地 
				key: 'uerInfo',
				data: user
			});
		},
		logout(state) {
			state.hasLogin = false;
			state.uerInfo = {};
			uni.removeStorage({
				key: 'uerInfo'
			});
		}
	}
})

export default store

3、配置main.js入口文件

import Vue from 'vue'
import App from './App'
import store from './store'

Vue.config.productionTip = false
Vue.prototype.$store = store; //挂载在VUE实例上
App.mpType = 'app'

const app = new Vue({
	store,//store对象
	...App
})
app.$mount()

4.index.vue调用

<script>
	import{
		mapState, //先导入mapState方法
		mapMutations,
	} from 'vuex'
    export default {
	computed: {
		...mapState([
			'forcedLogin',
			'hasLogin',
			'user'])
	},
	methods:{
		...mapMutations(['login']),
	}

这边有个小坑是,因为我的首页用不到login方法,所以就没有在mothds中去添加

methods:{ …mapMutations([‘login’]), }

导致Index.vue在调用全局变量时取不到值。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值