在vue项目中,数据已经在页面渲染,但在后续操作时获取不到数据

如下图

产生这个问题的原因

异步问题

如何解决

方法一:可以将其存放在一个setTimeout里面(利用一个极小的延迟来获取数据),如下图

效果

方法二:将操作放入axios里面,如下图

  • 9
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue 实现页面跳转只打开一个标签页,后续打开的页面都在这个标签页展示,可以使用 Vue Router 的导航守卫来实现。 具体实现步骤如下: 1. 在路由配置,给需要跳转的路由设置一个唯一的 name。 ```javascript const routes = [ { path: '/home', name: 'home', component: Home }, { path: '/about', name: 'about', component: About } ] ``` 2. 在路由跳转前,判断当前路由是否已经打开过,如果已经打开过,则不需要再打开一个新的标签页。 ```javascript router.beforeEach((to, from, next) => { const routerList = store.state.routerList const index = routerList.findIndex(item => item.path === to.path) if (index !== -1) { // 如果已经打开过,则将当前路由设置为激活状态 store.commit('setActiveRouter', routerList[index]) next(false) } else { // 如果有打开过,则将当前路由添加到路由列表 const router = { path: to.path, name: to.name, title: to.meta.title || to.name, icon: to.meta.icon || '', query: to.query, params: to.params } store.commit('addRouter', router) store.commit('setActiveRouter', router) next() } }) ``` 3. 在页面渲染,根据当前激活的路由来展示对应的组件。 ```html <template> <div class="main"> <component :is="activeRouter.name"></component> </div> </template> <script> export default { computed: { activeRouter () { return this.$store.state.activeRouter } } } </script> ``` 上述代码,我们通过 store 来保存路由列表和当前激活的路由,并在页面渲染展示对应的组件。这样就可以实现页面跳转只打开一个标签页,后续打开的页面都在这个标签页展示的效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值