首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

从 antDesign 来窥探移动端“滚动穿透”行为

我们元素区域内进行拖拽时,当子元素滚动到底部(顶部)时,仍然继续往下()进行拖动。 原理 上述两种情况相信大家也日常业务开发碰到过不少次。...就比如,手册规定了 Element 以及 Document 滚动必要特性以及代码层面应该如何处理这些特性,但是手册并没有强制规定某些行为不可以被实现,就好比 scroll chaining...想象一下,如果你页面每个 Modal 弹窗都使用了 useLockScroll 这个 hook ,那么当页面开启两个弹窗,当关闭一个时另一个还存在时总不能移除了 BODY_LOCK_CLASS 吧...实际源码并不是使用 Math.abs(scrollHeight - clientHeight - scrollTop) < 1 判断滚动条是否到达底部,而是使用 scrollTop + offsetHeight...结语 文章到这里就和大家说声再见了,刚好前段时间公司内编写移动端组件时遇到过这个问题所以拿出来和大家分享。 当然,如果大家对于文章内容有什么疑惑或者有更好解决方案。

38320

useTypescript-React Hooks和TypeScript完全指南

这些功能可以应用程序各个组件之间使用,从而易于共享逻辑。Hook 令人兴奋并迅速被采用,React 团队甚至想象它们最终将替换类组件。...以前 React ,共享逻辑方法是通过高阶组件和 props 渲染。Hooks 提供了一种更简单方便方法来重用代码并使组件可塑形更强。...其中 3 个挂钩被视为是最常使用“基本”核心挂钩。还有 7 个额外“高级”挂钩,这些挂钩最常用于边缘情况。...useRef with TypeScript useRef挂钩允许你创建一个 ref 并且允许你访问基础 DOM 节点属性。...当你需要从元素中提取值获取与 DOM 相关元素信息(例如其滚动位置)时,可以使用此方法。

8.5K30

React 进阶 - 海量数据处理和其他细节

PC 端一种常见数据请求加载场景,这种数据交互有一个问题就是,如果没经过处理,加载完成后数据展示元素,都显示页面上,如果伴随着数据量越来越大,会使页面 DOM 元素越来越多,即便是像 React...虚拟列表,长列表滚动过程,只有视图区域显示是真实 DOM ,滚动过程,不断截取视图有效区域,让人视觉感觉列表是滚动,达到无限滚动效果。...分区 视图区:视图区就是能够直观看到列表区,此时元素都是真实 DOM 元素 缓冲区:缓冲区是为了防止用户滑或者下滑过程,出现白屏等(缓冲区和视图区为渲染真实 DOM ) 虚拟区:对于用户看不见区域...但是 React 只要触发 setState useState ,如果没有渲染控制情况下,组件就会渲染,暴露一个问题就是,如果视图更新不依赖于当前 state ,那么这次渲染也就没有意义。...所以对于视图不依赖状态,就可以考虑不放在 state 。 对于类组件,可以直接使用 this.xxx ,对于函数组件,可以使用 useRef 来存储不依赖于视图状态。

1.3K10

为了秋招,我开发了一款页面元素高亮插件

所以撒,基于这个想法,我visiky大佬开源基于React+Tshttps://github.com/visiky/resume简历生成器基础开发了一款简历高亮(页面元素高亮)插件。...3.1.1 动态插入DOM节点到页面上 React,想将一个组件插入页面,我们只能借助原生方法,否则我们只能在ReactDOM.render选中节点下操作。...#3 副作用 最后一步是对上边两个方法对调用,同时注意我们需要通过ReactDOM.renderAPI将React组件渲染到刚才创建节点。 这里为什么不用传送门?...原因在于,我们菜单组件display:none时候是没有宽高,我们需要在一开始便拿到组件宽高,以便于隐藏时候仍可以做计算。 哈?那为什么不用visibility来控制显隐?...[2]//DIV[2]/DIV[1]/DIV[2]/DIV[2]' 再次使用时候可以通过document.evalute这个API进行选择 而对于定位自己添加节点,我们节点替换时就会有一个带有

1.1K30

react hooks 全攻略

React Hooks 是 React 提供一种功能,允许我们函数组件使用状态和其他 React 特性。使用 Hooks 可以简化函数组件状态管理和副作用处理。...# 为什么使用 Hooks 呢? 因为 React 之前,只能使用组件来拥有状态和处理副作用。这导致函数组件复用状态逻辑变得困难,同时处理副作用也变得复杂,如数据获取和事件处理等。...# 为什么使用 useRef JavaScript ,我们可以创建变量并将其赋给不同值。然而,函数组件,每次重新渲染时,所有的局部变量都会被重置。...# useRef 主要用途 访问 DOM 元素:通过使用 useRef 创建一个引用,可以将其附加到 JSX 元素 ref 属性,从而获取对该 DOM 元素引用。...注意 # useRef 虽好,请勿滥用 refuseRef都是 React 提供用于引用 DOM 元素其他值机制。

36540

玩转react-hooks,自定义hooks设计模式及其实战

前言 自从react16.8,react-hooks诞生以来,在工作中一直使用hooks,一年多时间里,接触react项目,渐渐使用function无状态组件代替了classs声明有状态组件,期间也总结了一些心得...还不明白react-hooks伙伴可以看另外一篇文章: react-hooks如何使用?...什么是自定义hooks 自定义hooks是react-hooks基础一个拓展,可以根据业务需要制定满足业务需要hooks,更注重是逻辑单元。...自定义hooks-驱动条件 hooks本质是一个函数。函数执行,决定与无状态组件组件自身执行上下文。...总结 以上就是我react自定义hooks总结,和一些实际应用场景,我们项目中,80%表单列表场景,都可以用上述hooks来解决。

1.8K20

React 进阶 - Ref

指向 ref 对象获取到实际内容,可以是 DOM 元素组件实例其他 } React 提供两种方法创建 Ref 对象: 通过 React.createRef 创建一个 ref 对象 class...Ref 注意:不要在函数组件使用 createRef,否则会造成 Ref 对象内容丢失等情况 函数组件 useRef:可以用 hooks useRef export default function...: Child} 上面代码片段,用一个字符串 ref 标记一个 DOM 元素,一个类组件(函数组件没有实例,不能Ref 标记),React 底层逻辑,会判断类型 如果是 DOM 元素,会把真实...+ ref 模式一定程度上打破了 React 单向数据流动原则 绑定在 ref 对象属性,不限于组件实例或者 DOM 元素,也可以是属性值方法 场景三:高阶组件转发 如果通过高阶组件包裹一个原始类组件...按钮切换直接改变 useRef 内容 useEffect 里面可以直接访问到改变后 typeInfo 内容,不需要添加依赖项 # Ref 原理 对于 Ref 标签引用,React 是如何处理呢?

1.7K10

手把手带你10分钟手撸一个简易Markdown编辑器

前言 最近我项目中需要实现一个 markdown编辑器 需求,并且是以React框架为开发基础,类似掘金这样: 我第一想法肯定是能用优秀开源就一定用开源,毕竟不能老是重复造轮子。...,当我手动滚动完以后停止了任何操作,但是两个区域仍然不停滚动,这是为什么呢?...,这样就可以 handleScroll 方法里区分此次滚动是被动触发还是主动触发了 import React, { useState, useRef, useEffect } from 'react...光标所在处添加文字**加粗文字** 动图效果演示: import React, { useState, useRef, useEffect } from 'react' import markdownIt...后续我也会继续发一些教程,对这个编辑器功能进行扩展 我将代码都上传到了 Github仓库 (opens new window),后续扩展一下功能,并作为一个完整组件发布到npm给大家使用,希望大家多多支持

1.5K20

手把手带你10分钟手撸一个简易Markdown编辑器

前言 最近我项目中需要实现一个 markdown编辑器 需求,并且是以React框架为开发基础,类似掘金这样: ? 我第一想法肯定是能用优秀开源就一定用开源,毕竟不能老是重复造轮子。...真正html标签 操作,我们借助了React提供dangerouslySetInnerHTML属性,详细使用可以看React 官方文档(opens new window) 此时一个简单markdown...同步滚动效果实现了,但能很明显得看到,当我手动滚动完以后停止了任何操作,但是两个区域仍然不停滚动,这是为什么呢?...,这样就可以 handleScroll 方法里区分此次滚动是被动触发还是主动触发了 import React, { useState, useRef, useEffect } from 'react...我已经发布markdown-editor-reactjs (opens new window),已经完成了其它工具实现,想要看代码可以去源码里看 七、补充 为了保证包体积足够小,我将第三方依赖库

1.9K10

React-hooks面试考察知识点汇总

难以理解 class class 是学习 React 一大屏障。你必须去理解 JavaScript this 工作方式,这与其他语言存在巨大差异。还不能忘记绑定事件处理器。...Hook 将组件相互关联部分拆分成更小函数(比如设置订阅请求数据),而并非强制按照生命周期划分。你还可以使用 reducer 来管理组件内部状态,使其更加可预测。...Hook 使你非 class 情况下可以使用更多 React 特性。 从概念讲,React 组件一直更像是函数。而 Hook 则拥抱了函数,同时也没有牺牲 React 精神原则。...然而,useRef() 比 ref 属性更有用。它可以很方便地保存任何可变值,其类似于 class 中使用实例字段方式。请记住,当 ref 对象内容发生变化时,useRef 并不会通知你。...变更 .current 属性不会引发组件重新渲染。如果想要在 React 绑定解绑 DOM 节点 ref 时运行某些代码,则需要使用回调 ref 来实现。

1.2K40

React-hooks面试考察知识点汇总

难以理解 class class 是学习 React 一大屏障。你必须去理解 JavaScript this 工作方式,这与其他语言存在巨大差异。还不能忘记绑定事件处理器。...Hook 将组件相互关联部分拆分成更小函数(比如设置订阅请求数据),而并非强制按照生命周期划分。你还可以使用 reducer 来管理组件内部状态,使其更加可预测。...Hook 使你非 class 情况下可以使用更多 React 特性。 从概念讲,React 组件一直更像是函数。而 Hook 则拥抱了函数,同时也没有牺牲 React 精神原则。...然而,useRef() 比 ref 属性更有用。它可以很方便地保存任何可变值,其类似于 class 中使用实例字段方式。请记住,当 ref 对象内容发生变化时,useRef 并不会通知你。...变更 .current 属性不会引发组件重新渲染。如果想要在 React 绑定解绑 DOM 节点 ref 时运行某些代码,则需要使用回调 ref 来实现。

2K20

美丽公主和它27个React 自定义 Hook

❞ 在下图中,someFunction()函数组合(使用)了函数a()和b()。函数b()使用了函数c()。 毫无疑问,React「函数组件实际就是普通JavaScript函数」!...这意味着我们可以像下面的图像所示,「将一个多个组件组合(使用)到另一个组件」: 有状态组件 vs 无状态组件 React组件可以是有状态(stateful)无状态(stateless)。...例如,用于获取数据并将数据管理本地变量逻辑是有状态。我们可能还希望多个组件重复使用获取数据逻辑。 以前,状态逻辑只能在类组件使用生命周期方法来实现。...("mouseleave", clear, ref); useEventListener("touchend", clear, ref); } 通过利用这个钩子,开发人员可以轻松地在其React应用程序任何元素定义...修改此元素高度,使页面可滚动,滚动过程,可查看待验证元素可见性 待验证元素 {visible && "(Visible

56420

React技巧之useRef钩子

为了选择一个元素元素设置ref属性,并设置为调用useRef()钩子返回值。并使用refcurrent属性访问dom元素,例如ref.current 。...需要注意是,当使用ref来访问元素时候,你不必元素设置id属性。 这里有一个React使用ref极简示例。...如果你不能访问你试图在你组件中选择元素,并且不能简单地对其设置ref 属性,那么就使用document.querySelector方法。...举个例子,你可以onClick事件处理函数安全访问refcurrent属性,那是因为当事件被触发时,该元素将出现在DOM。...总结 如果你试图通过 document.querySelector ref 直接在你函数组件render方法访问一个元素,该元素可能还没有渲染。

53520

React ref & useRef 完全指南,原来这么用!

在这篇文章,你将学习如何使用React.useRef()钩子来创建持久可变值(也称为referencesrefs),以及访问DOM元素。 我们将从下面几点讲解: 1....state 更新是异步(state变量重新呈现后更新),而ref则同步更新(更新后值立即可用) 从更高角度来看,ref 用于存储组件基础设施数据,而 state 存储直接呈现在屏幕信息。...初始化渲染时 Ref 是 null 初始渲染时,保存DOM元素 ref 是空: import { useRef, useEffect } from 'react'; function InputFocus...更新 references 限制 功能组件功能范围应该计算输出调用钩子。 这就是为什么更新 ref (以及更新 state)不应该在组件函数直接作用域内执行。... element - 元素reference.current是可用

6.2K20

40道ReactJS 面试问题及答案

引用是使用组件 React.createRef() 方法功能组件 useRef() 挂钩创建。 创建后,可以使用 ref 属性将 ref 附加到 React 元素。... ParentComponent 内部,使用 useRef 挂钩创建一个 ref (inputRef)。然后使用 ref 属性将该引用传递给 ChildComponent。...这通常在类组件 componentDidMount 生命周期方法完成,或者函数组件带有空依赖数组 ([]) useEffect 挂钩中完成。...您可以通过使用 JSX autoFocus 属性通过以编程方式将输入元素集中功能组件 useEffect 挂钩组件 componentDidMount 生命周期方法,将输入元素集中页面加载...对于更简单应用程序,请使用带有 useState 和 useEffect 挂钩本地组件状态。

18510

React-Hooks-useLayoutEffect

为什么推荐 useLayoutEffect 修改 DOM 布局样式?...会出现闪屏情况代码如下:App.js:import React, {useRef, useState, useEffect} from 'react';import '....来看 useLayoutEffect 效果代码如下:import React, {useRef, useState, useLayoutEffect} from 'react';import '....只有需要组件挂载之后更新 DOM 布局和样式时候才使用 useLayoutEffect为什么使用 useLayoutEffect 来更新 DOM 布局和样式useEffect 是组件已经渲染到屏幕上了才执行...,useLayoutEffect 是组件还没有渲染到屏幕就会执行,所以如果在组件已经渲染到屏幕上了, 才去更新 DOM 布局和样式, 那么用户体验不好, 会看到闪屏情况,而如果是组件还没有渲染到屏幕

22220
领券