接上篇上拉加載。。。
思路····
比如現(xiàn)在有A頁(yè)面(進(jìn)入列表的頁(yè)面)阐虚,列表頁(yè)面,詳情頁(yè)面规求;
1、在A頁(yè)面(或者其他進(jìn)入列表的頁(yè)面)卵惦,在跳轉(zhuǎn)路由進(jìn)列表頁(yè)面的時(shí)候在session中存儲(chǔ)一個(gè)值(“isGoBack”)阻肿,用來(lái)判定是否是返回的頁(yè)面(如果是返回的頁(yè)面就不請(qǐng)求接口,直接拿session中存儲(chǔ)的數(shù)據(jù))
goStudy(){
sessionStorage.setItem("isGoBack",0);//0:不是返回的頁(yè)面 1:是返回的頁(yè)面
this.props.history.push("/train-course")
}
2鸵荠、在列表頁(yè)進(jìn)入詳情頁(yè)的時(shí)候冕茅,存儲(chǔ)三個(gè)元素(當(dāng)前請(qǐng)求數(shù)據(jù)頁(yè)數(shù)伤极,列表數(shù)據(jù)蛹找,滾動(dòng)條的位置)
//進(jìn)入詳情頁(yè)
gotoDetial(){
//存儲(chǔ)數(shù)據(jù)
const listInfo = {
pIndex:this.state.getDataConfig.pIndex,
courseData:this.state.courseData,
scorllTop:document.getElementById("train-course").scrollTop
}
sessionStorage.setItem("listInfo",JSON.stringify(listInfo))
this.props.history.push("/train-learn/3")
}
3、在“列表頁(yè)“組件渲染完成后(componentDidMount)判斷”isGoBack“哨坪,是否是返回的頁(yè)面,”
是:將第二步存儲(chǔ)的數(shù)據(jù)更新到相應(yīng)的state中
否:直接調(diào)取接口獲取數(shù)據(jù)
componentDidMount() {
//session:"isGoback" 0:不是返回的頁(yè)面 1:是返回的頁(yè)面
// 獲取當(dāng)前滾動(dòng)條的位置庸疾,并且設(shè)置滾動(dòng)條的值和數(shù)據(jù)
let isGoback = sessionStorage.getItem("isGoBack");
if(isGoback==="1"){//返回回來(lái)的頁(yè)面
let listInfo = JSON.parse(sessionStorage.getItem('listInfo'));
console.log(listInfo)
this.setState({
getDataConfig: Object.assign({}, this.state.getDataConfig, {
pIndex:listInfo.pIndex
}),
courseData:listInfo.courseData
},()=>document.getElementById("train-course").scrollTop=listInfo.scorllTop)//指定元素內(nèi)的滾動(dòng)條位置,如果是文檔可參考用window.scorllTo(x[Number],y[Number])
}else {//從其他頁(yè)面進(jìn)入的列表頁(yè)
this.getData();
}
document.getElementById("train-course").addEventListener('scroll', () => this.watchOnscroll());//給元素添加滾動(dòng)監(jiān)聽(tīng)
}
4当编、在詳情頁(yè)面組件將卸載的時(shí)候(componentWillUnmount)設(shè)置”isGoBack“的類型:
componentWillUnmount(){
sessionStorage.setItem("isGoBack",1)
}