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 方便下次進入小程序時可以免登陸
