| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> JavaScript知识库 -> 【react】列表置顶操作导致滚动问题的分析和解决,react dom-diff右移策略,overflowAnchor: ‘none‘遇到滚动锚定问题并且需要关闭行为 -> 正文阅读 |
|
[JavaScript知识库]【react】列表置顶操作导致滚动问题的分析和解决,react dom-diff右移策略,overflowAnchor: ‘none‘遇到滚动锚定问题并且需要关闭行为 |
需求分析消息列表里面会有一些内容需要置顶,但是点击置顶后,列表直接滚到顶部不利于消息的批量操作。 复现效果原因分析区别参考于这篇文章https://www.cnblogs.com/yadiblogs/p/11129206.html react 与 vue的diff区别 key 具体是如何起作用的和为什么不能用 index 作为 key 值参考于这篇文章 所以一定要保证 key 的唯一性 那 key 具体是如何起作用的呢? 首先在 React 中只允许节点右移 因此对于上图中的转化,只会进行 A,C 的移动 则只需要对移动的节点进行更新渲染,不移动的则不需要更新渲染 解决方案getSnapshotBeforeUpdate() 方法在最近一次渲染输出(提交到 DOM 节点)之前调用。 在 getSnapshotBeforeUpdate() 方法中,我们可以访问更新前的 props 和 state。 getSnapshotBeforeUpdate() 方法需要与 componentDidUpdate() 方法一起使用,否则会出现错误。
不足与补充getSnapshotBeforeUpdate() 与 componentDidUpdate() 方法一起使用只能解决比较简单组件的场景,组件稍微复杂会有明显回弹效果是不佳的。问题根源不在于diff,diff只是个更新的手段和过程。最终都是要在页面上更新掉那些东西,滚动与否,不是diff和react控制的,是chrome控制的。
overflowAnchor: ‘none’ 默认情况下,在任何支持滚动锚定行为的浏览器中都将其启用。因此,仅当您在文档或文档的一部分中遇到滚动锚定问题并且需要关闭行为时,才通常需要更改此属性的值。 通过查阅 MDN 发现适配上不支持safari,也发现的确源码在safari上不会出现滚动bug。 源码
|
|
JavaScript知识库 最新文章 |
ES6的相关知识点 |
react 函数式组件 & react其他一些总结 |
Vue基础超详细 |
前端JS也可以连点成线(Vue中运用 AntVG6) |
Vue事件处理的基本使用 |
Vue后台项目的记录 (一) |
前后端分离vue跨域,devServer配置proxy代理 |
TypeScript |
初识vuex |
vue项目安装包指令收集 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/23 13:22:38- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |