index.vue
<template> <view> <view class=""> 当前经度:{{local.long}} 当前纬度:{{local.lat}} </view> <view v-if="!hasLogin"> 游客你好{{hasLogin}} </view> <view v-if="hasLogin"> 你好:{{userinfo.nickName}} </view> </view> </template> <script> import { mapState,mapMutations } from \'vuex\' export default { computed:{ ...mapState([\'hasLogin\',\'userinfo\',\'local\']) }, data() { return { jwd:{ long:"",//当前位置的经度 lat:"",//当前位置的纬度 } } }, onLoad() { this.getjwd() this.islogin() }, methods: { ...mapMutations([\'login\',\'savejwd\']), getjwd(){ var _this=this uni.getLocation({ type: \'wgs84\', success(res) { let jwd={ long:res.longitude,//当前位置的经度 lat:res.latitude,//当前位置的纬度 } _this.savejwd(jwd) console.log(\'当前位置的经度:\' + res.longitude); console.log(\'当前位置的纬度:\' + res.latitude); } }); }, islogin(){ var _this=this uni.getStorage({ key: \'userinfo\', success(res) { _this.login(res.data) console.log(res.data); } }); } } } </script> <style> </style>
user.vue
<template> <view> <button class=\'testbutton\' open-type="getUserInfo" @getuserinfo="tologin" withCredentials="true"> 登陆</button> <view v-if="!hasLogin"> 请先登陆{{userinfo}} </view> <view v-if="hasLogin"> {{userinfo.nickName}} </view> </view> </template> <script> import { mapState,mapMutations } from \'vuex\' export default { computed:{ ...mapState([\'hasLogin\',\'userinfo\']) }, data() { return { } }, methods: { ...mapMutations([\'login\',\'aa\']), tologin(){ this.aa(2) var _this=this uni.getUserInfo({ provider:"weixin", success(info) { console.log(info) _this.login(info.userInfo) } }) } } } </script> <style> </style>
store/index.js
import Vue from \'vue\' import Vuex from \'vuex\' Vue.use(Vuex) const store = new Vuex.Store({ state: { hasLogin: false, userinfo: {}, local:{}, }, mutations: { // 登录 login(state,res) { state.hasLogin = true state.userinfo = res uni.setStorage({ key: \'userinfo\', data: res }) }, // 经纬度 savejwd(state,jwd) { state.local = jwd }, aa(state,n){ console.log(n) } }, }) export default store
main.js
因为涉及到定位,所以要直接修改微信代码的 app.json。注意是修改微信代码,不是uniapp代码
"permission": { "scope.userLocation": { "desc": "你的位置信息将用于小程序位置接口的效果展示" } },
效果图未登陆前
点击登陆后
将信息经纬度储存到vuex,方便其他页面全局调用。如果下次在其他位置进入小程序,经纬度也会变
将用户信息存储到localstore 方便下次进入小程序时可以免登陆
请发表评论