1
0
Fork 0
Browse Source

vault backup: 2022-05-07 23:08:15

master
YuJian920 3 years ago
parent
commit
9d54a86a84
  1. 11
      随时随地/纯JS实现下拉加载.md

11
随时随地/纯JS实现下拉加载.md

@ -9,16 +9,15 @@ @@ -9,16 +9,15 @@
实现的思路很简单,就是判断 滚动高度 + 可视高度 是否大于文档高度
```javascript
const {} = wino
window.pageYOffset + window.innerHeight >= document.documentElement.scrollHeight
const { pageYOffset, innerHeight } = window
pageYOffset + innerHeight >= document.documentElement.scrollHeight
```
如果判断结果为真,就向后端请求更多数据,再使用push方法添加新请求返回的数据
## 实现过程
实现每次下拉都返回不同的数据,就要对内容进行分页,根据页数返回不同的数据,但是这个项目并没有后端,后端返回的数据用的是Mock.js模拟的,问题来了Mock.mock在拦截GET请求的时候是无法拦截到url后面带的参数,这样一来就没法在Mock.js对传入的参数进行判断,这时候有两种解决思路,一种是数据分6页就写6个Mock.mock分别拦截不同的页数,使用这种方法的代码会很冗余,还有一种是uncleLian大佬的实现方法:使用for循环让Mock.mock拦截不同的页数
<!--more-->
实现每次下拉都返回不同的数据,就要对内容进行分页,根据页数返回不同的数据,但是这个项目并没有后端,后端返回的数据用的是 Mock.js 模拟,那么问题来了 Mock.mock 在拦截 GET 请求的时候是无法拦截到 url 后面带的参数的,这样一来就没法在 Mock.js 对传入的参数进行判断,这时候有两种解决思路,一种是数据分6页就写6个 Mock.mock 分别拦截不同的页数,使用这种方法的代码会很冗余,还有一种是 uncleLian 大佬的实现方法:使用 for 循环一次生成 6个 Mock.mock 拦截不同的页数
```javascript
for (let Page = 1; Page <= 6; Page++) {
@ -31,7 +30,7 @@ for (let Page = 1; Page <= 6; Page++) { @@ -31,7 +30,7 @@ for (let Page = 1; Page <= 6; Page++) {
}
```
这样一来就实现了Mock.js对GET请求参数的模拟,光是这样还不行,需要对mock模拟的数据进行拆分,根据页数的不同返回的内容也不同,这里用到了JS的slice方法对数据拆成了6份
这样一来就实现了 Mock.js GET 请求分页参数的模拟,光是这样还不行,需要对mock模拟的数据进行拆分,根据页数的不同返回的内容也不同,这里用到了array.prototype.slice() 方法对数据进行拆分
```javascript
for (let Page = 1; Page <= 6; Page++) {
@ -45,7 +44,7 @@ for (let Page = 1; Page <= 6; Page++) { @@ -45,7 +44,7 @@ for (let Page = 1; Page <= 6; Page++) {
}
```
获取到了返回的分页数据,下一步就是要把数据给渲染出来,这里直接使用`push(params)`添加数据是不行的,因为params是一个数组,这里需要用到JS的展开运算(`...`)
获取到了返回的分页数据,下一步就是要把数据给渲染出来,这里直接使用 push(params) 添加数据是不行的,因为params是一个数组,这里需要用到JS的展开运算
```javascript
this.MusicListJson.push(...params);

Loading…
Cancel
Save