Vuex(mapState,mapMutation)登录账号后显示当前账号信息

95 阅读2分钟

在操作大量数据时若直接在组件中定义变量,会让代码变得庞大,且不便于操作,因此可以用Vuex。

案例:判断用户是否登录,登录后跳转到个人界面显示信息

1 store/index.js

在store文件夹中创建index.js文件,

image.png

2 store/modules

mutaitions-types.js定义方法名并暴露 image.png

存储变量及方法

state.userInfo=user这里是用户的全部信息 image.png

3 登录组件

点击登录后触发login方法,在login中获取用户信息。

使用Vuex中的方法 需要引用import { mapMutations } from "vuex";

然后在methos方法中...mapMutations(["mutaitions-types.js定义的方法名"]),这样就可以在其他方法中调用了

向后端发送请求,得到返回值res,执行LOGIN方法,将res.data作为参数,根据上面的LOGIN方法可知,它可将用户信息本地存储,且登陆状态为true,代表登录。这样在浏览器的应用中的本地存储空间中则会多一条信息

image.png

image.png

4 个人信息

查看个人信息需要看是否为登录状态,就可获取本地存储空间的信息判断。 获取数据需要引入mapState,然后再computed获取,在html可使用{{userInfo.tel}}等渲染到页面

image.png

5 购物车

在购物车组件中获取购物车的数据。

前端发送请求,带参数token,将从后端取得数据传达store中存储,赋值给state.list,为购物车数据,然后...mapState({ list: (state) => state.cart.list }),

image.png image.png

二次封装axios时查看是否有token,有则复制 image.png 接收前端传的token然后解析获取用户信息进行查询 image.png

使用

image.png

进入网页后是否有账号登录

created就调用INIT_USER方法(APP.vue)

image.png 取获取本地存储空间存账号的信息,名为teaUserInfo

若有则给state赋值,为登录状态 image.png