使用 useAsyncData 返回的数据里的 refresh,可以重新请求获取数据。
先修改一下组件的模板,在里面添加两个按钮,一组 div,里面添加一组 button,按钮文字是上一页,绑定元素的 click 事件,用 backward 作为事件处理器,复制一份这个按钮元素,文字改成下一页,处理器的名字换成 forward。
修改一下组件脚本,在里面声明一个 page 表示页码,用一下 Vue 提供的 ref,初始值是 1 。下面再定义两个方法,声明一个 backward,用箭头函数定义它,在它里面我们可以让 page 的值减去 1 ,然后再执行一下 refresh()。
复制一份这个方法,名字改成 forward,在这个方法里让 page 的值加上 1 。同样需要执行 refresh。
修改一下给 $fetch 提供的内容列表接口的地址,这个接口支持通过 page 查询符分页获取指定页码的数据,把这个查询符的值设置成 page.value。
测试
在浏览器测试一下,点击 下一页 这个按钮会执行组件里的 forward,在这个方法里,首先它会让 page 数据的值加上 1 ,然后执行 refresh 重新请求获取数据。
再点击上一页,这样就会执行组件里的 backward 方法,在方法里会让 page 的值减去 1 ,然后执行 refresh 获取到特定页面的内容列表数据。