Javascript 组件在mounted()上发出GET请求,并对子组件进行props响应。若我键入直接指向子组件的URL,会发生什么?
假设我有两个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
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组件中。我只是不太清楚这是否是最好的方法。