Google maps 在页面加载NuxtJS之前访问Vuex存储
上下文:我正在尝试通过BeforeCenter()路由保护上的place_id获取Google Maps place数据。本质上,我希望在有人准确输入url时加载数据。目前,当我使用自动完成输入,然后输入路由时,一切都可以直接工作,但当我从新选项卡直接访问url时,一切都不起作用。我已经能够在传统的Vue中使用Google maps 在页面加载NuxtJS之前访问Vuex存储,google-maps,vue.js,vuex,nuxt.js,vue2-google-maps,Google Maps,Vue.js,Vuex,Nuxt.js,Vue2 Google Maps,上下文:我正在尝试通过BeforeCenter()路由保护上的place_id获取Google Maps place数据。本质上,我希望在有人准确输入url时加载数据。目前,当我使用自动完成输入,然后输入路由时,一切都可以直接工作,但当我从新选项卡直接访问url时,一切都不起作用。我已经能够在传统的Vue中使用beforeEnter()路由保护解决这个问题,但无法使用Nuxt解决这个问题。请帮忙 问题:在Nuxt中加载页面之前,如何访问Vuex存储 错误:我尝试的任何解决方案(见下文)要么以空白
beforeEnter()
路由保护解决这个问题,但无法使用Nuxt解决这个问题。请帮忙
问题:在Nuxt中加载页面之前,如何访问Vuex存储
错误:我尝试的任何解决方案(见下文)要么以空白页面结束,要么页面无法加载(我认为它陷入了一个循环,无法解决问题)
尝试的解决方案:
中间件({store,params}){
return store.dispatch('myModule/fetchLocation',params.id)
}
data(){
返回{
filteredLocation:{}
}
}
//剪断
异步数据({store,params}){
const{data}=wait store.dispatch('myModule/fetchLocation',params.id)
返回filteredLocation=数据
}
上下文
/*全球谷歌*/
从“Vue”导入Vue
从“~/node\u modules/vue2谷歌地图/src/main”导入*作为VueLogleMaps
Vue.use(VueLogleMaps{
负载:{
关键字:process.env.VUE_APP_GMAP_关键字,
库:“几何图形、图形、位置”
}
})
导出常量状态=()=>({
selectedLocation:{}
})
导出常量操作={
fetchLocation({commit},params){
返回新承诺((解决)=>{
Vue.$gmapipPromiseLazy()。然后(()=>{
常量请求={
placeId:params,
字段:[
“姓名”,
“评级”,
“格式化的电话号码”,
“几何学”,
“地点id”,
"网站",,
"检讨",,
“用户评分总额”,
"照片",,
"邻近地区",,
“价格水平”
]
}
const service=new google.maps.places.places服务(
document.createElement('div')
)
service.getDetails(请求、功能(位置、状态){
如果(状态=='OK'){
提交('SET_PLACE',PLACE)
解决()
}
})
})
})
}
}
导出常量突变={
设置位置:(状态,选择)=>{
state.selectedInstructor=selection
}
}
编辑:我已经在名为google maps.js
的插件中有了它,在我的numxt.config.js
文件中我有:
插件:[
{src:'~/plugins/google maps.js'}
]
//
//
建造:{
传输文件:[/^vue2谷歌地图.js($| \/)/],
扩展(配置,ctx){}
}
使用中间件是我们在加载页面之前访问Vuex的方式。尝试将配置部分放入自定义Nuxt插件中。
在Plugins文件夹中创建一个文件(您可以将其命名为global.js)。
把这个
在global.js中。
然后像这样在nuxt.config.js中添加插件
plugins: [
'~/plugins/global.js'
]
另外,请确保在文件夹结构中的“page\u id”名称之前使用下划线。很抱歉,在最初的帖子中没有提到这一点(我已经编辑过)。我已经在名为
google maps.js
的插件中有了它,在我的numxt.config.js
文件中有:javascript插件:[{{src:'~/plugins/google maps.js'}]////构建:{transfile:[/^vue2 google maps.js($\124; \/)/],扩展(config,ctx){}
plugins: [
'~/plugins/global.js'
]