首页
学习
活动
专区
圈层
工具
发布

腾讯面试官:如何从0到1实现一个高性能Collapse折叠组件,直到现在我还实现不出来

然后我根据提供接口属性,我大概实现出来类似下面组件的形态,然后面试官问动画除了height形式,还有其他它方式么,因为height的变化会触发重排,另外折叠面板panel如果是大量数据,打开的时候会卡顿,该如何处理...,这个我到时候解决了,提前渲染隐藏就行,但是重排的问题直到现在我都没有解决,发出来问问大家,如果是你们,你们会如何思考 jcode 我们先从最基本的实现开始,然后逐步添加更多的功能,如手风琴模式、...key 手风琴模式:string | null 非手风琴模式:string[] - arrow 自定义箭头,如果是 ReactNode,那么 会自动为你增加旋转动画效果 ReactNode | ((...active: boolean) => React.ReactNode) - defaultActiveKey 默认展开面板的 key 手风琴模式:string | null 非手风琴模式:string...如果我们处于手风琴模式,这将是一个字符串或null。如果我们不在手风琴模式,这将是一个字符串数组。 arrow:自定义的箭头。如果是一个React节点,将自动为你添加旋转动画效果。

98420
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    2023 React 生态系统,以及我的一些吐槽……

    ,但我们试图在 create-react-app 的精神下提供一些工具,它们可以抽象化设置过程、处理最常见的用例,并包含一些有用的实用工具,让用户可以简化他们的应用程序代码。...它作为一个独立的入口点包含在软件包中。它是可选的,但可以消除手动编写数据获取逻辑的需求。 这些工具对所有的 Redux 用户都应该有益。...RTK Query 是 Redux Toolkit 包中包含的一个可选附加组件,它的功能是构建在 Redux Toolkit 的其他 API 之上的。...表单处理 Formik 面对现实吧,在 React 中处理表单确实很冗长。更糟糕的是,大多数表单辅助工具做了太多的魔法,并且通常会伴随着显著的性能损耗。...import React from "react"; import { Formik } from "formik"; const Basic = () => ( Anywhere

    2K30

    盘点React开发中不可或缺的工具

    因此,我们需要一种可以分析react代码结构和变量状态的工具,而react dev tools 就是这样的工具,通过安装这个浏览器扩展,我们就可以轻松地分析react框架中各个变量状态信息,还可以分析react...useHooks Hooks是 React 中的新增功能,可让我们在不编写类的情况下使用状态和其他 React 的功能。...对于钩子如何使用很多人还不是很理解,不过这没关系,有人已经总结了很多关于钩子的使用方式,并且提供了详细的案例帮助我们理解,你只需要访问usehooks这个网站就可以查看并使用它们。...Storybook 让我们能够轻松地将技术文档包含在我们的设计系统中,从而使开发组件变得更加简化。...Formik 表单处理是网页开发经常会遇到的问题,而Formik是一个可以在React中构建表单的组件。

    2K20

    【译】W3C WAI-ARIA最佳实践 -- 控件

    Home (可选地): 当焦点在手风琴的标题,将焦点移到手风琴的第一个标题 End (可选地): 当焦点在手风琴的标题,将焦点移动到手风琴最后一个标题 Control + Page Down (可选地)...: 如果焦点在手风琴面板内,将焦点移动到面板标题上。...如果焦点在手风琴标题上,将焦点移动到前一个手风琴标题。如果焦点在第一个手风琴标题上,不响应 Control + Page Up 或将焦点移动到手风琴的最后一个标题。...Control + Page Up (可选地): 如果焦点在手风琴面板内,将焦点移动到该面板的标题。如果焦点在手风琴标题,将焦点移动到手风琴前一个标题。...避免在创建路标 region 扩展的情况下,使用 region 角色,例如在一个包含超过6个面板的手风琴中,可能会同时展开。

    5.6K30

    2020 年你应该知道的 React 库

    如果你是来自于像 Angular 这样的框架的开发者,你可能已经习惯了框架包含了所需要的所有功能, 然而对于 React 来说,它的核心并不是完善所有的可选库。这是优势还是劣势取决于你自己。...如何开始 React 如果你是一个完全不熟悉 React 的初学者想创建一个 React 项目,加入 React 的世界。有许多工具包项目可以选择,每个项目都试图满足不同的需求。...如果您只是想了解这些初学者工具包是如何工作的,那么可以尝试从头开始设置 React 项目。你将从一个基本的 HTML 和 JavaScript 项目开始,然后自己添加 React 和它的支持工具。...以下是一些流行的解决方案: nivo Victory react-vis Recharts Chart Parts React 中的表单库 在 React 中最流行的表单库是 Formik。...建议: Formik React Hook Form React 中的数据获取库 很快,您就必须向远程 API 发出请求,以便在 React 中获取数据。

    17.1K40

    一个简洁、强大、可扩展的前端项目架构是什么样的?

    而前者包含一个完整的React全栈论坛项目: 用户登录页面 作者通过这个项目举例,展示了与「项目架构」相关的13个方面的内容,比如: 文件目录该如何组织 工程化配置有什么推荐 写业务组件时该怎么规范...怎么做状态管理 API层如何设计 等等.........表单状态 表单数据需要区分「受控」与「非受控」,表单本身还有很多逻辑需要处理(比如「表单校验」),所以也推荐用专门的库处理这部分状态,比如: React Hook Form Formik React...dynamicParam=1) 这部分状态通常是路由库处理,比如react-router-dom。 总结 本文节选了部分Bulletproof React中推荐的方案,有没有让你认可的观点呢?...欢迎在评论区交流项目架构中的最佳实践。 参考资料 [1] Bulletproof React: https://github.com/alan2207/bulletproof-react

    1.3K30

    React Router <Form> 真有点东西

    开发中,我们常见这样几个场景: 表单一提交,整个页面刷新了? 还在用 onSubmit + e.preventDefault()? 表单验证写了一堆 JS,却还是不灵光?...这些痛点,其实都是因为你还没有系统掌握 React Router 的 和 HTML 的原生验证能力。 今天我们就来拆解两个关键问题: 如何让表单在客户端“优雅地跳转”?...✅ 拦截表单的默认提交行为(你不用再写 e.preventDefault() 了) ✅ 把数据提交给你在路由里定义的 action 函数处理 ✅ 全程在客户端路由内跳转,体验像“SPA”一样丝滑 三、如何用...表单提交后,数据会被送到你配置在路由里的 action 函数中 export async function contactPageAction({ request }: ActionFunctionArgs...只能手动 JS 处理(Constraint API) 这也是为啥很多团队最后还是选择用 React Hook Form 或 Formik。

    7700

    精读《React — 5 Things That Might Surprise You》

    中的 ref 机制作为访问元素的 DOM 节点的手段,无论是因为我们需要它来计算其大小、设置焦点状态,或者基本上做任何 React 自然不能做的事情。...点击demo ❝在函数式组件中我们可以使用ref存储静态变量 ❞ 3. React 可以强制重新挂载一个组件 写入DOM的成本非常高。这就是为什么我们通常不想重新mount 组件,除非绝对必要。...那么在那种情况下,我们如何告诉 react 卸载并立即重新mount 组件?用一个简单的技巧——为我们的组件提供一个key,并改变它的值。...❝key prop 是一个特殊的 React 属性 ❞ 著名的 React 警告 image key是帮助 React 跟踪元素的东西,即使我们已经改变了它在组件结构中的位置或重新渲染了父级(否则每次渲染都会导致整个组件数组被重新安装...(children) ❝如果你需要在您的组件中强制执行单个子项(我最近注意到 formik 这样做),你可以简单地在您的组件中包含以下行,React 将为你运行检查和错误处理: ❞ React.Children.only

    1.3K20

    回望过去,展望未来- 2024 React 生态一览表

    不知不觉中,React已经开源 10 年了。 也不知道,大家是在何时接触的React的。我是大学(2016年)开始就关注React。...「路由参数(Route Parameters):」 有时,URL 中包含一些动态的数据,例如文章 ID、用户 ID 等。这些数据可以通过路由参数传递给相应的组件,以便在页面中显示相关的内容。...它描述了发生了什么事情,通常以一个包含type字段的纯对象的形式存在。在状态管理中,动作用于触发状态的变更。...Formik Formik[8] 提供一组工具和组件,使管理表单状态、验证和提交变得容易。使用 Formik 的唯一缺点是它没有维护。 2....: https://formik.org/docs/tutorial [9] React Hook Form: https://www.react-hook-form.com/get-started/

    1.5K10

    通过三个实例掌握如何使用 TypeScript 泛型创建可重用的 React 组件

    市面上已经有很多关于 TypeScript 泛型的文章和教程,所以本文将聚焦于如何在 React 组件中使用泛型,让你的组件变得更加灵活和可重用。...尽管在实际项目中我们通常会使用像 Formik 或 react-hook-form 这样的库来处理表单,但为了演示泛型的强大之处,我们将从头开始创建一个简单的表单组件。...使用通用表格组件 接下来,我们使用 Table 组件来渲染一个包含姓名和年龄的表格。 import React from 'react' import { Table } from '....这样,表格组件就会渲染包含两行数据的表格,每行数据对应一个人的姓名和年龄。 结束 TypeScript 的泛型是一项强大的功能,能够使你的 React 组件更加灵活和可重用。...通过使用泛型,你可以创建适用于任何数据类型的组件,这在处理各种数据类型的实际应用中尤为有用。 希望这篇文章能让你更好地理解如何在 React 组件中使用泛型,并让你的组件变得更加灵活和可重用。

    1.2K10

    React 表格组件设计

    在现代 Web 开发中,表格组件是不可或缺的一部分,用于展示数据列表、统计信息等。React 作为一个流行的前端框架,提供了丰富的工具和库来构建高效的表格组件。...本文将从浅到深地介绍 React 表格组件的设计,包括常见问题、易错点及如何避免,并通过代码示例来帮助理解这些概念。1....2.2 如何避免错误使用成熟的库:使用如 react-window 或 react-virtualized 等成熟的虚拟滚动库。合理设置滚动条:确保滚动条的平滑性和响应性,避免卡顿。...3.2 如何避免错误使用状态管理库:使用如 useState 或 useReducer 来管理表格状态。合理使用表单验证:使用如 Formik 或 yup 等库来进行表单验证。...通过本文的介绍,希望读者能够对 React 表格组件的设计有一个全面的了解,并在实际开发中合理应用这些设计原则,避免常见的错误和陷阱。

    63410

    10 个不错的 CSS 小技巧

    接下来,我们创建一个 :before 伪元素,它将包含内容 content,指向特定的 attr()。这里指 attr(tooltip-data)。...此外,你可以包含自定义的样式。这取决于你设定的 tooltp 的数据,你也许需要调整其宽度或者边距。一旦你设定了 tooptip-data arrt() 类,你可以在你设计的其他部分应用。...使用关键帧实现手风琴下拉效果 JavaScript 库,比如 jQuery, Cash 等,即使你想使用一个简单的缩放功能,你都要整个引入。幸运的是,很多 CSS 技巧能够避免这种引入。...比如下面的手风琴片段代码。 如果你认真看下当下 web 设计的趋势,你会发现在登陆页面就会发现手风琴这种设计效果。这是一种简缩内容的方式,以节省设计空间。...常见问题解答,产品功能,使用提示等功能,都可以放在手风琴内实现。下面是纯 CSS 代码片段对其的实践。 代码片段 8.

    1.2K10
    领券