【问题标题】:Is google map being instantiated once every vue-router navigation?每次vue-router导航都会实例化一次谷歌地图吗?
【发布时间】:2020-01-22 10:41:45
【问题描述】:

这个问题来自于我使用 Javascript Google Maps API 得到了一个相当大的惊喜。

基本上,我启动了基于房地产的网络应用程序,投放了一些广告,获得了一些流量,这导致了比预期大得多的账单。账单高于预期的原因之一是地图 API 被点击的次数过多,尤其是与流量相比。

我正在使用 Vue 路由器。

现在,我有一条名为 /listings 的路线,在该路线上有一张地图(使用 vue2-google-maps),以及一个列表视图。

假设,每次用户点击/listings,组件/页面get 的渲染并发送动态地图请求?这意味着单个用户只需导航到不同的列表,然后导航回地图搜索即可轻松发送 10、20、100 多个 Gmap API 请求。谁能确认一下?

现在我正在考虑使用对话框的解决方案,v-if 在选择列表时显示在顶部,基本上永远不会离开/listings 页面。

但是,我的假设是否正确?如果是这样,有没有更好的方法来解决这个问题?

【问题讨论】:

  • 基本上没有人能不看代码就回答这个问题。根据您的描述,您每次安装列表视图时都会实例化一个地图。但是您可以通过查看开发工具中的“网络”选项卡并查看何时发出对地图 API 的请求来自己找到答案。
  • 很公平,是的 - 它确实在每次到达路线时都会实例化一个新地图。考虑到我要为生成的每张新地图付费,这令人沮丧
  • 您是否尝试过使用 keep-alive 缓存组件? vuejs.org/v2/api/#keep-alive

标签: vue.js vue-component vue-router


【解决方案1】:

<router-view> 周围使用<keep-alive> 并且有效!

【讨论】:

    猜你喜欢
    • 2023-03-20
    • 2019-01-28
    • 2020-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-11
    • 2022-01-23
    • 1970-01-01
    相关资源
    最近更新 更多