吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 7437|回复: 4
收起左侧

[其他转载] Uni-app实战上加载新下拉刷新 WordPress rest api实例

[复制链接]
fengrui99 发表于 2019-5-5 10:57
本帖最后由 fengrui99 于 2019-5-5 11:06 编辑

原文来自:https://www.frbkw.com/1700/
通过WordPress自带的 rest api接口我们去实现uni-app的上拉刷新和下拉加载,首先我们需要一点基础。如果有基础可以直接看正文
1.uni-app 实战接入热门小说API接口 适用于新手
2.Uni-App 微信项目练习首页列表含界面传参 新手教程(一)
3.Uni-App 微信项目练习列表传参聊天窗口 新手教程(二)



如果有基础的我们就看这这边哈哈!


1.建立项目
(节约资源用以前的代替)




2.开启下拉功
在目录pages.json文件中找到首页位置给它添加“enablePullDownRefresh”: true 完整代码如下
[Asm] 纯文本查看 复制代码
"path": "pages/index/index",
                        "style": {
                                "navigationBarTitleText": "首页",
                                "backgroundColor": "#FFFFFF",
                                "enablePullDownRefresh": true
                        }


3.引入组件
我们在官方dome里找到components目录下uni-load-more文件,复制到我们项目中。且在首页中引入(在script标签下)
[Asm] 纯文本查看 复制代码
//1引入组件 uni-load-more.vue
import uniLoadMore from '../../components/uni-load-more/uni-load-more.vue';

继续在下方去声明全局变量// 定义全局参数,控制数据加载var _self, page = 1,timer = null;
最后得export default中注册组件
[Asm] 纯文本查看 复制代码
components: {        //注册组件        uniLoadMore},


4.定义请求函数
件中的轮播图和卡片文章 多余部分代码大家直接忽视就好哈哈效果图
[Asm] 纯文本查看 复制代码
loadingText: '加载中...',
        loadingType: 0, //定义加载方式 0---contentdown  1---contentrefresh 2--contentnomore
        contentText: {
        contentdown: '上拉显示更多',
        contentrefresh: '正在加载...',
        contentnomore: '没有更多数据了'
},

页面打开后我们直接定义请求一个getnewsList函数
[Asm] 纯文本查看 复制代码
onLoad: function() {
                        this.TowerSwiper('swiperList');
                        _self = this;
                        //页面一加载时请求一次数据
                        this.getnewsList();
                },

onPullDownRefresh监控下拉
[Asm] 纯文本查看 复制代码
onPullDownRefresh: function() {
                        //下拉刷新的时候请求一次数据
                        this.getnewsList();
                },

onReachBottom监控上拉
[Asm] 纯文本查看 复制代码
onReachBottom: function() {
                        //触底的时候请求数据,即为上拉加载更多
                        //为了更加清楚的看到效果,添加了定时器
                        if (timer != null) {
                                clearTimeout(timer);
                        }
                        timer = setTimeout(function() {
                                _self.getmorenews();
                        }, 1000);
                        // 正常应为:
                        // _self.getmorenews();
                },


5.上拉 下拉代码块
文章API:https://www.frbkw.com/wp-json/wp/v2/posts
methods中编写上拉加载
[Asm] 纯文本查看 复制代码
// 上拉加载
                         getmorenews: function() {
                            if (_self.loadingType !== 0) {//loadingType!=0;直接返回
                                return false;
                            }
                            _self.loadingType = 1;
                            uni.showNavigationBarLoading();//显示加载动画
                            uni.request({
                                url:'https://www.frbkw.com/wp-json/wp/v2/posts?page=' + page,
                                method: 'GET',
                                success: function(res) {
                                    console.log(JSON.stringify(res));
                                    if (res.data == null) {//没有数据
                                        _self.loadingType = 2;
                                        uni.hideNavigationBarLoading();//关闭加载动画
                                        return;
                                    }
                                    page++;//每触底一次 page +1
                                    _self.newsList = _self.newsList.concat(res.data);//将数据拼接在一起
                                    _self.loadingType = 0;//将loadingType归0重置
                                    uni.hideNavigationBarLoading();//关闭加载动画
                                }
                            });
                        },


下拉刷新
[Asm] 纯文本查看 复制代码
// 下拉刷新
                        getnewsList: function() {//第一次回去数据
                            page = 1;
                            this.loadingType = 0;
                            uni.showNavigationBarLoading();
                            uni.request({
                                url: 'https://www.frbkw.com/wp-json/wp/v2/posts?page=1',
                                method: 'GET',
                                success: function(res) {                                                
                                    page++;//得到数据之后page+1
                                    _self.newsList = res.data;
                                                console.log(_self.newsList)
                                    uni.hideNavigationBarLoading();
                                    uni.stopPullDownRefresh();//得到数据后停止下拉刷新
                                }
                            });
                        },


6.总结
这个方式也是在uni-app基础视频中看到的。其中还有一个地方不是很好,因为在请求api返回数据中无法使用this,所以我们得在一开始去定义_self。主要还是因为写法的原因文章返回是
[Asm] 纯文本查看 复制代码
 success: function(res) {
        console.log(res.data);
}
如果是官方的
[Asm] 纯文本查看 复制代码
success: (res) => {
        console.log(res.data);
  
    }
就可以使用this无需在定义。

20190430101132.png

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

mosou 发表于 2019-5-5 11:03
易上手app开发教程。可以出一套了  支持
 楼主| fengrui99 发表于 2019-5-5 11:07
mosou 发表于 2019-5-5 11:03
易上手app开发教程。可以出一套了  支持

哈哈,一套要写好久
 楼主| fengrui99 发表于 2019-5-5 16:43
chers 发表于 2020-4-19 11:01
不错的文章
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-17 04:23

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表