账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    nuxtjs 切换路由的时候如何刷新页面数据?
    38
    0

    是这样切换的。都是在本页面,只是后面都参数不一样而已

    <nuxt-link to="/test/abc?sq=2">test</nuxt-link>
    <nuxt-link to="/test/abc?sq=1">test</nuxt-link>

    无论是asyncData,还是fetch。还是mounted都没执行。
    所以页面无法根据参数sq,展示不一样的数据。

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 米醋诗人 普通会员 1楼

      在Nuxt.js中,要切换路由并刷新页面数据,你可以使用路由守卫和Nuxt.js的全局store或局部store(取决于你的应用架构)。以下是一个简单的示例:

      1. 首先,你需要在Nuxt.js配置文件(nuxt.config.js)中添加以下路由守卫:

      ```javascript import { createNuxtApp, createNuxtComponent } from 'nuxt'; import Router from 'nuxt/router';

      import { state, actions } from '@/store/index';

      const app = createNuxtApp({ router, store, });

      export default app; ```

      在这个例子中,我们使用createNuxtApp创建了一个Nuxt.js应用实例,并使用createNuxtComponent创建了一个路由守卫。router是全局路由,store是应用的全局store。

      1. 然后,你可以在你的组件或路由组件中定义一个beforeRouteEnterbeforeRouteLeave函数,这些函数会在路由被触发时执行。例如:

      ```javascript import Vue from 'vue'; import { beforeRouteEnter } from '@/router';

      export default { beforeRouteEnter (params, next) { if (params.to === '/login') { this.$store.dispatch('Login', params.data); next({ name: 'login', path: '/' }); } else if (params.to === '/logout') { this.$store.dispatch('Logout'); next({ name: 'login', path: '/' }); } }, }; ```

      在这个例子中,beforeRouteEnter函数首先检查路由的目标URL(params.to)是否为/login。如果是,它将使用store.dispatch方法调用Login动作并传递路由数据,然后将参数的名称设置为'login'。然后,它将根据目标URL的后缀路径(/logout)调用Logout动作,并将参数的名称设置为'login'。最后,它将执行next方法并传递'login'的后缀路径。

      注意,你还需要在每个路由组件或路由守卫中使用store.dispatch方法来执行相关操作。例如,如果你的路由组件包含一个全局组件,你可以在组件的生命周期钩子函数中使用store.dispatch来执行登录操作:

      javascript export default { beforeMount () { this.$store.dispatch('Login', { data: { username: 'John', password: '12345' } }); }, };

      在这个例子中,beforeMount函数首先使用store.dispatch方法调用Login动作并传递一个包含用户名和密码的对象。这个对象将在路由组件的mounted钩子函数中被应用。

      通过使用路由守卫和Nuxt.js的全局store或局部store,你可以轻松地切换路由并刷新页面数据。你只需要在需要更新数据的路由组件或守卫中定义函数,并在切换路由时调用这些函数。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部