【发布时间】:2021-11-05 20:32:43
【问题描述】:
我希望将坐标(lat、lng)从一个状态传递到一个动作以通过坐标获取城市名称,但是 state.lat 和 state.lng 在 axios.get url 中不起作用,我做错了什么?
export default new Vuex.Store({
state: {
address: [],
lat: '',
lng: ''
},
mutations: {
SET_ADDRESS: (state, address) => {
state.address = address
},
},
actions: {
async GET_ADDRESS({commit, state}) {
navigator.geolocation.getCurrentPosition(
(position) => {
state.lat = position.coords.latitude
state.lng = position.coords.longitude
},
);
const address = await axios.get(`https://api.opencagedata.com/geocode/v1/json?q=${state.lat}+${state.lng}&roadinfo=1&key=5032de2d86224227b1d1fbe12f6bf7`,{})
commit('SET_ADDRESS', address.data.results);
return address;
},
},
getters: {
ADDRESS: state => state.address
}
})
【问题讨论】:
-
navigator.geolocation.getCurrentPosition 应该是异步的,因为它有一个回调。