亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在 Chrome 中使用 React 添加新的 DOM 項目不會保持預期的滾動位置

在 Chrome 中使用 React 添加新的 DOM 項目不會保持預期的滾動位置

肥皂起泡泡 2022-12-29 13:58:00
在向 React 中的狀態數組添加新項目時,我遇到了一個意想不到的問題,這導致更多項目被添加到 DOM 中。在 Safari 和 Firefox 中,這會導致新的 DOM 項目被添加到折疊下方,我必須向下滾動才能看到新項目。在 Chrome 中,屏幕保持滾動到頁面底部,項目添加在上方。這意味著我需要向上滾動才能看到新項目。這顯然不是延遲加載或“加載更多”按鈕以查看列表中更多博客文章的預期行為。請參閱此處:https ://codesandbox.io/s/new-leaf-0fnv5?file=/src/App.js以下是一些其他觀察結果:我在另一臺裝有 Chrome 的 Mac 上試過它,它的行為更像 Safari 和 Firefox,但稍微向上滾動,以便在單擊“添加更多”之前看到最后一個項目。鑒于兩種瀏覽器之間的差異,必須有一種方法來實現更穩定的預期行為。我以前創建過類似的“加載更多”列表,但以前從未遇到過。我也從未在其他實時網站上看到過這種行為,所以很明顯我正在做一些不同的事情來觸發 Chrome 有時會以這種方式運行,我只是不知道是什么。我在 SO 上注意到一兩個類似的問題,但沒有一個解決了為什么在 Chrome 中有時會發生這種情況,但并非總是如此。關于可能影響 Chrome 以這種意外方式運行的任何建議?
查看完整描述

2 回答

?
PIPIONE

TA貢獻1829條經驗 獲得超9個贊

似乎解決方案是overflow-anchor: none在 body 標簽上使用 CSS 屬性(或一些處理滾動的父 div)。

https://css-tricks.com/almanac/properties/o/overflow-anchor/


查看完整回答
反對 回復 2022-12-29
?
人到中年有點甜

TA貢獻1895條經驗 獲得超7個贊

Chrome 的最新更新也對我做了同樣的事情,搜索了幾天,每天都有新人報告。但是鑒于上面的答案,我暫時將其作為修補程序實施,直到他們承認重大更改


對我來說,在頁面內容末尾按下一個按鈕后,我加載了更多內容,錯誤是當加載新內容時該按鈕保持在視圖中,因此跳過了新內容,修復工作但是 css 屬性可以像這樣直接在按鈕上:


const useStyles = makeStyles(theme => ({

  root: {

    flexGrow: 1,

  },

  noBrowserScrolling: {

    overflowAnchor: "none",

  }


}));

            <Button

              variant="outlined"

              color="default"

              fullWidth

              onClick={onLoadMore}

              disabled={!moreExists}

              className={classes.noBrowserScrolling}

            >

              {moreExists ? "Show More" : "No More to Load"}

            </Button>

我沒有足夠的評論點,所以必須提交一個單獨的答案,對不起亞當


查看完整回答
反對 回復 2022-12-29
  • 2 回答
  • 0 關注
  • 131 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號