網站首頁 編程語言 正文
首先我們先寫返回頂部的樣式
然后綁定一個點擊事件,滾動到頂部
BackTop onClick={this.props.toTop}>返回</BackTop>
toTop(){
? ? ? ? console.log(111)
? ? ? ? window.scrollTo(0,0)
? ? }
這樣就可以實現點擊返回到頂部了。
接下來我們要寫滾動到一定距離出現,那么我們就需要在reducer.js中定義一個默認數據
showTop:false
在index.js中使用mapStateToProps接受這個值,并且使用三元運算通過控制showTop的值來控制顯示隱藏
const mapStateToProps = (state) =>{
return {
showTop:state.components.get('showTop')
}
}
//通過三元控制顯示隱藏
{
this.props.showTop ? <BackTop onClick={this.props.toTop}>返回</BackTop> : null
}
這時候就需要去監聽,頁面滾動的距離,直到頁面滾動到一定距離時,派發action給store,最后改變reducer中的數據,從而達到目的
//在componentDidMount中監聽事件
componentDidMount() {
this.bindEvents();
}
//然后監聽
bindEvents() {
window.addEventListener("scroll", this.props.changeScrollTop)
}
//在mapDispatch中將數據傳遞給store,并且判斷滾動到什么地方派發
const mapDispatchToProps = (dispatch) =>{
return{
changeScrollTop() {
if(document.documentElement.scrollTop > 400){
dispatch(actionCreators.changeScrollShow(true))
}else {
dispatch(actionCreators.changeScrollShow(false))
}
}
}
}
在actionCreators定義changeScrollShow方法
export const changeScrollShow = (show) => ({
type:actionTypes.CHANGE_SCROLL_SHOW,
show
})
最后在reducer中定義就可以啦
if(action.type === actionTypes.CHANGE_SCROLL_SHOW){
return state.set('showTop',action.show)
}
react緩慢返回頂部
功能描述:到一定距離顯示 返回頂部按鈕 ,點擊返回頂部,通過 requestAnimationFrame 調用 backTop 回調函數 緩慢返回到頂部
const [show, onShow] = useState(false)
// 返回頂部
const backTop = () => {
const s = document.documentElement.scrollTop || document.body.scrollTop
if (s > 0) {
// 要求瀏覽器在下次重繪之前調用 backTop 回調函數更新動畫
window.requestAnimationFrame(backTop)
window.scrollTo(0, s - s / 8)
}
}
// 是否顯示返回頂部
useEffect(() => {
const handleScroll = () => {
if (window.scrollY > window.innerHeight) {
onShow(true)
} else {
onShow(false)
}
}
document.addEventListener('scroll', handleScroll)
return () => document.removeEventListener('scroll', handleScroll)
}, [show])
// html
{show && (
<div className="arrow-up" onClick={backTop}>
<img src={require('@/assets/images/arrow.png')} />
</div>
)}
window.requestAnimationFrame() 告訴瀏覽器——你希望執行一個動畫,并且要求瀏覽器在下次重繪之前調用指定的回調函數更新動畫。該方法需要傳入一個回調函數作為參數,該回調函數會在瀏覽器下一次重繪之前執行。
原文鏈接:https://blog.csdn.net/mini74/article/details/105158591
- 上一篇:沒有了
- 下一篇:沒有了
相關推薦
- 2022-08-01 混淆矩陣Confusion?Matrix概念分析翻譯_其它綜合
- 2023-06-03 scipy稀疏數組dok_array的具體使用_python
- 2022-02-07 解決 laravels 無法接收微信回調的參數問題
- 2023-02-01 深入分析C語言存儲類型與用戶空間內部分布_C 語言
- 2021-12-01 Android?NDK開發(C語言--聯合體與枚舉)_Android
- 2023-04-10 Python中figure與axies繪圖有哪些不同_python
- 2023-03-11 Rust如何進行模塊化開發技巧分享_Rust語言
- 2022-12-13 C++實現一個簡易版的事件(Event)的示例代碼_C 語言
- 欄目分類
-
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支