react+antdm上拉載入
react+antdm上拉載入(元素,滾動條在元素上)
js
class TrianCourse extends Component {
constructor(props) {
super(props);
this.state = {
courseData: null,
getDataConfig: {
pIndex: 1,
pSize: 6,
courseType: 3,
trainType: -1,
isPay: false,
isAlbum:true
}
}
}
componentDidMount() {
this.getData();
//給元素新增滾動監聽
document.getElementById("train-course").addEventListener('scroll', () => this.watchOnscroll());
}
watchOnscroll() {
let scrollTop = document.getElementById("train-course").scrollTop;//滾動條捲去的高度
let clientHeight = document.getElementById("train-course").clientHeight;//可視區域高度
let scrollHeight = document.getElementById("train-course").scrollHeight;//元素總高度
console.log(scrollTop, clientHeight, scrollHeight)
if (scrollTop + clientHeight+1 >= scrollHeight) {//andriod少1px
this.setState({
getDataConfig: Object.assign({}, this.state.getDataConfig, {
pIndex: this.state.getDataConfig.pIndex + 1
})
}, () => this.getData())
}
}
//獲取列表介面
getData = () => {
Toast.loading("loading...")
//這裡是自己調取介面的方法
Base.GetAllCoursePage(this.state.getDataConfig).then(res => {
if (res.Ret === 0) {
Toast.hide()
console.log(res.Data)
if (this.state.getDataConfig.pIndex >= res.Data.Pages) {
Toast.fail("沒有更多資料")
return
}
if (this.state.getDataConfig.pIndex === 1) {
this.setState({
courseData: res.Data
})
}else{
let arr =this.state.courseData.ViewModelList.concat(res.Data.ViewModelList)
this.setState({
courseData:Object.assign({},this.state.courseData,{
ViewModelList:arr
})
})
}
} else {
console.log(res.Msg)
}
})
}
render() {
const {courseData} = this.state
return (
<div className='train-course' id='train-course'>
{
courseData && courseData.ViewModelList.length !== 0 && courseData.ViewModelList.map((item, key) => {
//ViewModelList是請求回來的資料,是一個陣列
return (
<div className='list' key={item.ID}>
<div className="left-logo">
<img src={item.CoverImg} alt=""/>
</div>
<div className='right-content'>
<p>{item.Name}</p>
<p>這是一位可愛的寶寶</p>
<p>時間:<span>2017年7月五號</span></p>
</div>
</div>
)
})
}
{/*<div className='load'>可在此處設定其他載入中樣式</div>*/}
</div>
)
}
}
export default TrianCourse;
css
.load{
font-size: 0.3rem;
text-align: center;
}
.train-course{
height: 100vh;//必須小於所有列表總高度之和(如:一個列表的高度是20px,則10個列表就是200px,那麼滾動元素盒子的高度就必須小於200px)
overflow: auto;
.list{
display: flex;
font-size: 0.3rem;
align-items: center;
.left-logo{
width:1.5rem;
height: 1.5rem;
padding: 0.3rem;
img{
width: 100%;
height: 100%;
}
}
}
}
下次將列表頁進入詳情頁之後,返回時,記錄進入時的位置~~~
相關文章
- 04-上拉載入更多
- mui上拉載入更多的使用UI
- vue上拉載入更多元件Vue元件
- 上拉重新整理,下拉載入
- 為RecyclerView新增分頁載入(上拉載入更多)功能View
- Flutter——下拉重新整理,上拉載入Flutter
- uni-app實現上拉載入APP
- php原生上拉載入,點選載入更多(jQuery,ajax,mysql)PHPjQueryMySql
- flutter - listView 下拉重新整理 上拉載入FlutterView
- 上拉載入下拉重新整理瞭解下
- ListView分頁顯示 上拉載入更多View
- 自己動手寫RecyclerView的上拉載入View
- Flutter 實現下拉重新整理&上拉載入Flutter
- Flutter listview下拉重新整理 上拉載入更多FlutterView
- RecyclerView下拉重新整理 上拉載入 原理DemoView
- UITableView:下拉重新整理和上拉載入更多UIView
- 如何實現上拉載入,下拉重新整理?
- recyclerView的側拉效果。上拉載入。下拉重新整理,點選事件等等View事件
- FlatList 資料繫結 及上拉載入實現
- Flutter下拉重新整理,上拉載入更多資料Flutter
- ListView下拉重新整理,上拉自動載入更多View
- uni-app | 上拉載入和下拉重新整理探索APP
- Flutter ListView封裝,下拉重新整理、上拉載入更多FlutterView封裝
- H5下拉重新整理和上拉載入實現原理淺析H5
- 下拉重新整理,上拉載入外掛mescroll原始碼分析原始碼
- vue 實現上拉載入下拉重新整理(思路賊清晰)Vue
- 手把手教你實現Android RecyclerView上拉載入功能AndroidView
- 關於MJRefresh上拉載入不顯示圓圈動畫動畫
- Flutter入門進階之旅(十五)ListView下拉重新整理&上拉載入更多FlutterView
- vue載入更多,上拉重新整理 VueScroller 簡單化思維Vue
- AngularJS進階(三十八)上拉載入問題解決方法AngularJS
- 搭建自己的直播平臺,RecycleView下拉重新整理,上拉載入View
- 移動端用下拉重新整理的方式實現上拉載入
- 【微信小程式】scroll-view 的上拉載入和下拉重新整理微信小程式View
- 淺談微信小程式中的下拉重新整理和上拉載入微信小程式
- HarmonyOS 下拉重新整理 上拉載入更多 第二種實現方式
- flutter - RefreshIndicator實現下拉重新整理、上拉載入 | 掘金技術徵文FlutterIndicator
- 直播網站原始碼,uni-app 資料上拉載入更多功能網站原始碼APP