import Taro from '@tarojs/taro';

import { connect } from '@tarojs/redux'

function withLoadList(opts = {}) {

return function demoComponent(Component) {

// redux里面的用户数据

// @connect(({ memberToken }) => ({

// memberToken

// }), (dispatch) => ({

// }))

class Hoc extends Component {

constructor(props) {

super(props);

this.state = {

resData: [],

scrollTop: 50,

nextText: false,

preText: false

};

this.downLoad = false;

this.type = 0;

this.prePage = 0;

this.preTotal = 1;

this.nextPage = 0;

this.nextTotal = 1;

this.pageSize = 20;

this.isOneLoad = true;

this._setData = this._setData.bind(this)

this.setOneLoad = this.setOneLoad.bind(this)

this.setType = this.setType.bind(this)

this.computePage = this.computePage.bind(this)

this.setPrePage = this.setPrePage.bind(this)

this.setNextPage = this.setNextPage.bind(this)

this.handleData = this.handleData.bind(this)

this._onScrollToUpper = this._onScrollToUpper.bind(this)

this._onScrollToLower = this._onScrollToLower.bind(this)

this.setScrollTop = this.setScrollTop.bind(this)

}

setOneLoad(b) {

this.isOneLoad = b

}

setType(type = 0) {

this.type = type;

}

computePage(total) {

return Math.ceil(total / this.pageSize)

}

setPrePage() {

let bool = this.computePage(this.preTotal) > this.prePage

this.prePage = this.prePage + 1;

console.log(this.computePage(this.preTotal), this.prePage);

return bool

}

setNextPage() {

this.nextPage += 1;

let bool = this.computePage(this.nextTotal) > this.nextPage

return bool

}

handleData() {

switch (this.type) {

case 0:

return {

pageNum: this.nextPage,

pageSize: this.pageSize,

type: 0

}

break;

case 1:

return {

pageNum: this.prePage,

pageSize: this.pageSize,

type: 1

}

break;

}

}

_onScrollToUpper() {

if (!this.downLoad) {

this.nextPage = 0;

this.nextTotal = 1;

this._onScrollToLower()

return false;

}

this.setType(1)

if (this.setPrePage()) {

this.requestRefresh()

} else {

console.log('没有了---');

this.setState({

preText: true

})

}

}

_onScrollToLower() {

this.setType(0)

if (this.setNextPage()) {

this.requestRefresh()

} else {

console.log('没有了');

this.setState({

nextText: true

})

}

}

_setData(data) {

console.log(this.state, '_setData');

let { resData } = this.state

switch (this.type) {

case 0:

return [...resData, ...data]

case 1:

this.setScrollTop(data)

return [...data, ...resData]

}

}

setScrollTop(data) {

let { prePage } = this

console.log(this);

this.setState({

scrollTop: 50 + this.prePage

})

}

async componentDidShow() {

// this.props.getList({

// pageNum: 1,

// pageSize: 20,

// type: 0

// }, (data) => {

// this.handleList(data.rows)

// })

console.log(this, 'aaaa', 'aaaathis.requestRefresh()');

this.requestRefresh()

if (super.componentDidShow) {

console.log(this.props, 'bbb');

super.componentDidShow();

}

}

requestRefresh() {

console.log(this.extensionData, this.downLoad, '====??????');

// console.log(this.props.onGetDataFun(this.handleData()), 'this.props.onGetDataFun(this.handleData())');

this.props.getList && this.props.getList({ ...this.handleData(), ...this.extensionData }).then(resData => {

console.log(resData, '===>');

console.log('<<<<<===>');

if (this.type === 0) {

this.nextTotal = resData.total

if (this.nextTotal <= 9 && this.isOneLoad && this.downLoad) {

this._onScrollToUpper()

}

} else {

this.preTotal = resData.total

}

this.setOneLoad(false)

// console.log(this._setData(resData.rows), this, 'hhhhhh');

console.log(this, this.setState(), '_setData');

let data = this._setData(resData.rows)

this.setState({

resData: data

})

})

}

render() {

return super.render();

}

}

return Hoc;

};

}

export default withLoadList;

taro更新页面数据_taroRefresh相关推荐

  1. taro更新页面数据_Taro 全局数据状态管理

    我们一说到全局数据状态管理时,对于 Vue 框架,或许你想到的是 Vuex:对于 React 框架,或者你想到的是 Redux:在微信小程序中,globalData 内定义全局使用变量:而在 Taro ...

  2. taro更新页面数据_Reconciler

    Taro 的运行时包括 DOM.BOM.React 兼容层.Vue 兼容层等内容,而不同的端平台或开发框架都有可能需要对 Taro 运行时进行侵入定制. 为了解耦,我们参考了 React Reconc ...

  3. taro更新页面数据_Taro 版本升级权威指南

    Taro 是一款由京东凹凸实验室推出的开放式跨端跨框架解决方案,致力于解决小程序.H5.React Native 的跨端同构问题,支持同时使用 React 和 Vue 来进行开发.本文由 Taro 团 ...

  4. 解决更新页面数据回显时时间不匹配问题:The specified value “Fri Nov 05 08:00:00 CST 2021“ does not conform to the requir

    解决更新页面数据回显时时间不匹配问题 我们输入时间数据回显,但是页面时间并没有显示 时间没有回显效果图 客户端控制台提示信息: The specified value "Fri Nov 05 ...

  5. ie浏览器缓存不能更新页面数据

    其他浏览器好使,ie浏览器不清缓存不能更新页面数据,采用下面的方法清除缓存 需要在Java过滤器里面添加如下字段 response.setDateHeader("Expires", ...

  6. 怎么用vue自动更新页面数据

    <body><div id="app"><div>欢迎:{{name}}</div><!-- {{}}就是插值语法相当于模板字 ...

  7. Java实现动态加载页面_[Java教程]动态加载页面数据的小工具 javascript + jQuery (持续更新)...

    [Java教程]动态加载页面数据的小工具 javascript + jQuery (持续更新) 0 2014-05-07 18:00:06 使用该控件,可以根据url,参数,加载html记录模板(包含 ...

  8. 直接修改html文本页面没变化,VUE 直接通过JS 修改html对象的值导致没有更新到数据中解决方法分析...

    本文实例讲述了VUE 直接通过JS 修改html对象的值导致没有更新到数据中解决方法.分享给大家供大家参考,具体如下: 业务场景 我们在使用vue 编写 代码时,我们有一个 多行文本框控件,希望在页面 ...

  9. php 微信实时更新,微信小程序修改data使页面数据实时更新的代码示例

    本篇文章给大家带来的内容是关于微信小程序修改data使页面数据实时更新的代码示例,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 需求:通过点击button修改dataList中che ...

  10. Vue的数据更新了但页面没有更新及数据频繁更新而页面只更新一次

    1.Vue的数据更新了,而页面没有更新 由于Vue的数据双向绑定,我们只需要修改数据,页面就会自动更新.但有时我们修改了数据,页面却也没有更新,这是为什么? 以下用Vue2为例,整理常见的几种问题 1 ...

最新文章

  1. linux C函数之access函数的用法
  2. Google工程师带你学算法
  3. ubuntu下eclipse的svn插件使用javahl
  4. jboss学习 - vfs---转载
  5. Sharepoint 自定义字段类型
  6. 设计模式之_Strategy_04
  7. mysql 替代like_mysql用instr替代like查询
  8. Android 数据存储之文件存储小记
  9. Windows 8实用窍门系列:9.Windows 8中使用FlipView
  10. 家庭的和谐稳定由什么决定?
  11. java读取ifc文件_IFC文件解析
  12. mysql oracle minus_Oracle Minus关键字
  13. Flutter中的依赖注入——get_it
  14. 在学习计算机编程不写代码_使用代码创建:通过制作游戏来学习和教授计算机编程
  15. Python邮件发送SMATP模块详细总结(含qq邮箱及163邮箱服务开启及授权码获取,多附件发送)
  16. 从大数据看技术,为什么天猫双11是史上最大数字经济节日
  17. 2022-2028全球与中国角膜矫正术市场现状及未来发展趋势
  18. Linux下运行c++程序
  19. 浮点尾数特性详解(02325计算机系统结构)
  20. elementplus中表格组件使用固定列时出现滚动条粘性布局固定表头

热门文章

  1. presscad排样lisp_PRESSCAD统赢使用技巧(二)
  2. imagej得到灰度图数据_北大博士教你如何从图像中获得可用的灰度数据
  3. 用Python下载抖音无水印视频
  4. 谷歌添加vue开发工具插件
  5. 极验验证码(6.0.9)破解(一) 之 抓包分析
  6. 美图秀秀编辑器盖住了顶导怎么解决
  7. 计算机鼠标键盘没反应,终于找到为什么电脑鼠标键盘失灵了
  8. VS2019安装和使用教程(超详细)
  9. jvm内存模型、jvm内存结构、Java内存结构、Java内存模型(JMM)、Java对象模型的区别(吐血研究整理)
  10. 一种辅助整理WoS英文论文题录文档的方法(python-docx)