公共的组件,在多个页面中被引用,项目启动后会发出重复的多次请求

公共的组件,在多个页面中被引用,项目启动后会发出重复的多次请求,也会mounted很多次,怎么解决这个问题?

阅读 5.3k
3 个回答

组件只渲染或处理数据,将数据请求放到store中或者父组件中

不推荐把请求放在公共组件里,如果硬要放,你可以:

  1. 缓存,设置适当时间的有效期
  2. 在组件里限制请求的频率或次数
  3. 给请求设置些前置条件

因为我的做法是组件内部自己管理数据的,可能会通过prop和其他组件交互,但是组件内做请求在我这边是可行的。
也就是数据请求还是放在组件里面,而我还没遇到你的问题。
我想,主要的问题在于

mounted很多次

一般而言,router中是这样配置的:


const Foo = { template: '<div>foo</div>' }
const Bar = { template: '<div>bar</div>' }

const routes = [
  { path: '/foo', component: Foo },
  { path: '/bar', component: Bar }
]

这个时候,加载的是一个component,所引用的组件应当mounted吧。
但是如果使用的是命名视图:

const router = new VueRouter({
  routes: [
    {
      path: '/',
      components: {
        default: Foo,
        a: Bar,
        b: Baz
      }
    }
  ]
})

这时,同一个页面中有多个view,那么多个组件一起mounted,引用的组件即使是相同,也会独立mounted一次,毕竟scope是不一样的。

我想还是项目结构的问题,公共组件的数据可以使用vuex的store来存储,但是并不是说解决了多次mounted的问题,因为还是上面的解释。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题