nuxt的asyncData在方法内没有办法通过 this调用

1,问题分析:

由于asyncData方法是在组件初始化 前被调用的,并且是在服务端调用所以该方法是没有办法通过 this 来引用的,也就意味着只能在首次重新加载的时候调用,如果遇到了分页,当页码改变的时候不能做服务端的调用。

2,解决方法:

nuxt的官方文档中提供了watchQuery属性可以监听参数字符串的更改。

如果定义的字符串发生变化,将调用所有组件方法(asyncData, fetch, validate, layout, …)。 为了提高性能,默认情况下禁用。

如果您要为所有参数字符串设置监听, 请设置: watchQuery: true.

3,watchQuery的使用方法:

首先如果要全局使用watchQuery,那就在nuxt.config.js中全局配置

module.exports = {
    watchQuery: true
}

如果不在nuxt.config.js中全局配置,那就默认是只在当前页面的监听

// 分页点击事件的方法

pageChange (page) {
    this.currentPage = page
    //在页码改变的时候要将参数以query的形式传到路径上
    this.$router.push({
        path:'/template',
        query:{
            page:page
        }
    })
},

watchQuery其实监听的是路径上参数的变化,从而调用
asyncData方法

其原理也是利用的是a标签,但是如果用a标签去跳转的话,每次改变参数,页面就会重新去刷新,那么页面就会有抖动效果,用户体验并不好,但是watchQuery去监听的方式并不会出现这样的情况

export default {
   //此处的page是当前路径上参数的key名
    watchQuery: ['page'] 
}

这样就可以参数改变重新调用asyncData方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值