Javascript 组件在mounted()上发出GET请求,并对子组件进行props响应。若我键入直接指向子组件的URL,会发生什么?

Javascript 组件在mounted()上发出GET请求,并对子组件进行props响应。若我键入直接指向子组件的URL,会发生什么?,javascript,vue.js,vuejs2,vue-component,Javascript,Vue.js,Vuejs2,Vue Component,假设我有两个URL: example.com/Profile example.com/Profile/City 当访问example.com/Profile时,我呈现组件Profile,当访问example.com/Profile/City时,我呈现组件City 我需要发出一个GET请求,返回两个组件中使用的信息。目前,我在这两个组件的mounted()lifecycle hook中都发出了GET请求,但我一直在想,我是否只能在父概要文件组件中执行一次,然后将其放到City,这样我就可以摆脱1

假设我有两个URL:

example.com/Profile
example.com/Profile/City
当访问
example.com/Profile
时,我呈现组件
Profile
,当访问
example.com/Profile/City
时,我呈现组件
City

我需要发出一个GET请求,返回两个组件中使用的信息。目前,我在这两个组件的mounted()lifecycle hook中都发出了GET请求,但我一直在想,我是否只能在父概要文件组件中执行一次,然后将其放到City,这样我就可以摆脱1个GET请求

但是,如果用户直接输入
example.com/Profile/City
,我不确定会发生什么情况?考虑到GET请求是在
Profile
组件的mounted()上执行的,而且自从用户直接键入指向
City
组件的URL后,我们还没有挂载
Profile
,我会在子组件中得到响应吗

考虑到GET请求是在Profile组件的mounted()上执行的,并且自从用户直接键入指向City组件的URL以来,我们还没有装载Profile,我会在子组件中得到响应吗

不,你不会的。你最终将没有数据

我一直在想,我是否可以只在父配置文件组件中执行一次,然后将其向下推到City,这样我就可以摆脱1 get请求

不是真的。但是,如果使用全局状态管理解决方案(如vuex),则可以将请求和数据移动到此全局状态,并从两个组件的
挂载的
触发请求的vuex操作

然后,您可以在vuex操作中实现逻辑,如果数据已经存在(即以前访问过
/profile
),该逻辑将跳过请求。但是在这种情况下,您应该确保保存一些时间戳,这样就不会无限期地缓存数据

如果您希望数据经常更改,我根本不会那样缓存它,而是每次都执行重复请求,以确保数据尽可能是新的

考虑到GET请求是在Profile组件的mounted()上执行的,并且自从用户直接键入指向City组件的URL以来,我们还没有装载Profile,我会在子组件中得到响应吗

不,你不会的。你最终将没有数据

我一直在想,我是否可以只在父配置文件组件中执行一次,然后将其向下推到City,这样我就可以摆脱1 get请求

不是真的。但是,如果使用全局状态管理解决方案(如vuex),则可以将请求和数据移动到此全局状态,并从两个组件的
挂载的
触发请求的vuex操作

然后,您可以在vuex操作中实现逻辑,如果数据已经存在(即以前访问过
/profile
),该逻辑将跳过请求。但是在这种情况下,您应该确保保存一些时间戳,这样就不会无限期地缓存数据


如果您希望数据经常更改,我根本不会那样缓存它,而是每次都重复请求,以确保数据尽可能新鲜。

为什么不在
City
组件中发出GET请求呢。无论何时从任何地方
City
呈现组件,它都会自动从API获取其数据。因此,它独立于您在
City
组件上登陆的位置。这正是我现在所做的,但是,通过这种方式,我两次发出相同的GET请求,一次在Profile组件中,一次在City组件中。我只是不太清楚这是否是最好的方法。为什么不在
City
组件中发出GET请求呢。无论何时从任何地方
City
呈现组件,它都会自动从API获取其数据。因此,它独立于您在
City
组件上登陆的位置。这正是我现在所做的,但是,通过这种方式,我两次发出相同的GET请求,一次在Profile组件中,一次在City组件中。我只是不太清楚这是否是最好的方法。