首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

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

我们先从最基本的实现开始,然后逐步添加更多的功能,如手风琴模式、自定义箭头、禁用状态、隐藏时是否渲染DOM结构 组件接口定义 Collapse 属性 说明 类型 默认值 accordion 是否开启手风琴模式...) - defaultActiveKey 默认展开面板的 key 手风琴模式:string | null 非手风琴模式:string[] - onChange 切换面板时触发 手风琴模式:(activeKey...它的类型与activeKey相同。 onChange:它在面板切换时被触发。它接收一个参数,表示当前展开面板的key。它的类型与activeKey相同。...null : activeKey); } onChange && onChange(isOpen ?...如果这个属性被设置为true,我们会在组件隐藏时仍然渲染DOM结构,如果面板渲染的数据量比较大,这个属性特别有用,不会造成打开的时候会卡顿一下 import React, { useState }

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

TDesign 更新周报(2022年5月第3周)

focus, 修复外部传入onMouseenter, onMouseleave, onwheel 事件导致组件内对应方法执行的问题 TreeSelect:修复支持 treeProps.keys.children...字段配置的问题 Menu:修复 expandType=popup 时箭头方向展示错误的问题 Menu:修复 width 不支持数组类型的问题 详情见:https://github.com/Tencent...TreeSelect:修复 placeholder 传入无效 详情见:https://github.com/Tencent/tdesign-vue-next/releases/tag/0.15.0 React...for Web 发布 0.34.0 ❗ Breaking Changes DatePicker:onChange 回调第二个参数调整为对象,支持更多类型返回值,存在不兼容更新 Form:不再默认渲染...性能优化,减少隐藏元素,使用更流畅 Table:重构表格嵌套关系 Input:重构输入框嵌套关系 Menu:重构导航菜单嵌套关系 Dropdown:重构下拉菜单嵌套关系 2.

2.8K30

TDesign 更新周报(2022年9月第4周)

已经存在的 beforeUpload 用于判定单个文件的是否继续上传新增事件 onValidate,文件校验不通过时触发,可能情况有:自定义全文件校验不通过、文件数量校验不通过、文件数量校验不通过新增事件...tdesign-vue/releases/tag/0.48.3Vue3 for Web 发布 0.23.0❗ Breaking ChangesUpload:autoUpload=false 时,增加 onChange...已经存在的 beforeUpload 用于判定单个文件的是否继续上传 @chaishi (#1723)新增事件 onValidate,文件校验不通过时触发,可能情况有:自定义全文件校验不通过、文件数量校验不通过...、文件数量校验不通过、文件名重复(允许重复文件名场景下不会触发)@chaishi (#1723)新增事件 onOneFileSuccess ,多文件上传场景下,在单个文件上传成功后触发 @chaishi...16 版本 event 对象缺失 code 属性判断错误 @HQ-Lin (#1526)DatePicker: 修复输入框清空后关闭弹窗重置问题 @HQ-Lin (#1543)详情见:https:/

1.2K10

React入门实战实例——ToDoList实现

.html 2.2 新建React项目 1.新建一个项目文件夹Code,使用VSCode,将Code文件加添加到工作区; ?...图2.1 2.右击Code文件夹,在选项卡中选择在终端中打开; ? 图2.2 3.在终端中输入如下命令,新建React项目: create-react-app todo-list ?...图2.4 React开发主要是对src里的文件动手脚,node_modules主要防止各种依赖包,public放置一些公共文件,package.json这些是一些配置文件,在此不详述。...当键盘变化后,触发添加函数,将输入值添加到待办事项中;代码如下: jsx: TodoList:  <input type = "text" ref = "inputToDo" onKeyUp...图3.3 待办和已办互相转换   这一步的思路也很简单,其实就是在触发checkbox的onChange事件时,将某一个事项的checked值变为相反的值(true->false/false->true

1.4K41

TDesign 更新周报(2022 年 4 月第 2 周)

Features Popup: content 尺寸变化后自动更新位置 Slider: label 为 function 时新增 value 和 position 参数 Upload: 支持自定义上传文件列表...列表型上传支持展示 errorMessage Checkbox: onChange 事件新增参数 option 表示当前操作对象,current 表示当前操作对象的 value Table: 表格拖拽排序支持完全受控用法...用于支持完全自定义「列配置按钮」风格和内容 列配置功能,新增 placement,用于控制「列配置按钮 」相对于表格组件的位置,可选值:左上角、右上角、左下角、右下角 列配置功能,新增控制列配置弹窗显示或隐藏属性...和 自定义拖拽上传 demo 中 “点击上传” 按钮无效 修复 Slider inputNumberProps 正常透传 修复 Affix onFixedChange 触发时机,在固定状态发生变化时才会触发该事件.../releases/tag/0.30.2 Miniprogram for WeChat 发布 0.7.3 版 Bug Fixes Cell: 修复传入 String 类型的 right-icon 不生效的问题

2K10

优化 React APP 的 10 种方法

这将影响性能,因为即使对象引用发生更改但字段更改,也会在组件上触发重新渲染。 重新选择库封装了Redux状态并检查该状态的字段,并告诉React什么时候渲染或不渲染字段。...React.lazy将一个函数作为参数: React.lazy(()=>{}) // or function cb () {} React.lazy(cb) 此回调函数必须使用动态import()语法加载组件的文件...Promise会解决模块是否成功加载的问题,并拒绝由于网络故障,错误的路径解析,找不到文件等原因导致模块加载错误。...如果再次单击该按钮,我们将有另一个重新渲染,不是这样,因为前一个状态对象和下一个状态对象将具有相同的data值,但是由于setState新状态对象的创建,React将看到差异状态对象引用和触发器重新呈现...如果不相等,则返回true,将触发重新渲染;如果不相等,则返回false,以取消重新渲染。

33.8K20

TDesign 更新周报(2022年7月第1周)

组件库Vue2 for Web 发布 0.43.2 FeaturesForm:添加内置校验方法 whitespace新增校验触发方式 trigger: 'blur' - 现在FormItem.label...为 string 类型时, Form.errorMessage 模板中的 ${name} 会被替换为 FormItem.label 属性;当 label 属性为 slot/function 时,${name...修复树形数据表格,选中子节点时,会导致父节点自动折叠问题Table: 修复合并单元格,动态数据显示异常问题、Table: 可编辑功能,数据更新不及时问题Cascader: 修复数据中 value 的数据类型为...,自动format输入值并回填的问题table: 兼容树状表格传入 tree 属性的场景详情见:https://github.com/Tencent/tdesign-react/releases/tag...for Mobile 发布 0.1.0适配移动端交互基于 React 16.x(全部基于 React Hooks 的 Functional Component)与其他框架/库(Vue / Angular

2.2K10

TDesign 更新周报(2022年11月第1周)

,不再添加无效类名 t-is-defaultUpload: 文件列表上传支持使用 fileListDisplay 自定义文件列表 @chaishi (#1704)Pagination: 透传selectProps...#1717)Calendar: 调整日历组件单元格外层 DOM 样式,修复在使用 cellAppend 插槽后可能样式会有异常的问题 @PsTiu (#1721)Textarea: 修复status的类型问题...小时制时分的显示异常 @uyarn (#1728)Dropdown: 修复下拉菜单可视无法完全受控的问题 @uyarn (#1729)Checkbox: 修复Checkbox的options 参数属性变化时重新渲染的问题...maxlength 时,无法删除且无法修改输入框内容,issue#1633 @chaishi (#1635)修复聚焦的时候恢复 format 之前的值问题 issue#1634 @chaishi (...状态切换后失效的问题 @uyarn (#1653)Pagination: 修复相同页码也会触发onChange的问题 @HQ-Lin (#1650)Message: 支持异步渲染组件 @kenzyyang

1.7K20

antd mobile 作者教你写 React 受控组件和非受控组件

如果比较简单粗暴的分析,我们可以把 State 拆成两部分: State 是用来存放数据的,它让我们在组件的渲染函数之外,可以“持久化”一些数据 State 的更新可以触发重新渲染,因为 React 会感知...GitHub 上收到了一条 issue:TabBar 的 onChange 为什么在同 key 的情况也会触发 #5409[1]。...这条 issue 揭示了一个隐藏已久的 bug,举个例子: 假如当前的 state 为 1,如果我们用的是 React 的 useState,那执行 setState(1) 不会有任何效果,React...对用户来说,点击同一个 Tab 并没有触发切换,也因此不应该触发 onChange 事件,所以我们还需要额外的增加一点判断,来解决这个 bug: 在 antd-mobile 中,我们也有一个这样的 usePropsValue...” 参考资料 [1] TabBar 的 onChange 为什么在同 key 的情况也会触发 #5409: https://github.com/ant-design/ant-design-mobile

1.7K10

TDesign 更新周报(2022年3月第3周)

Web 发布 0.37.2 版 Button: 修复 disabled 不生效的问题 Cascader: 修复文字过长时不显示 tooltip 的问题 Datepicker: 修复 Form 中使用时,触发校验时机错误的问题...Notification: 优化完善回收时的动画效果 DatePicker:打开时间面板重置时间 Menu:修复在没 overflow 时,仍出现滚动条的问题 Input: 修复组件keypress 事件触发...Web 发布 0.28.0 版 Swiper: 交互、设计、API 全部重构,如有使用老的 Swiper 组件需重新接入,⚠️存在不兼容更新 Swiper: 重构 swiper 组件 Table: 支持 onChange...  FormItem: 兼容包裹 upload 组件时传入 initialData 场景 详情见:https://github.com/Tencent/tdesign-react/releases/tag.../0.7.0 Vue3 for Mobile 发布 0.8.0 版 dropdown-menu: 移除冗余的 dom 结构 search: 修复样式丢失问题 input:修复输入框样式丢失问题 grid

1.3K20

记一个复杂组件(Filter)的从设计到开发

此文前端框架使用 rax,全篇代码暂开源(待开源) 前言 貌似在面试中,你如何设计一个 react/vue 组件,貌似已经是司空见惯的问题了。本文不是理论片,更多的是自己的一步步思考和实践。...`PureUI`:纯 UI占位类型,即纯 UI 放置,不涉及搜索,比如订阅按钮场景 筛选面板显示隐藏统一管理,支持下拉和左滑展示隐藏动画,统一搜索回调函数 Filter 组件在和业务面板隔离,支持任意组件接入...: visible:Boolean 显示隐藏标志量 triggerIndex:Number触发的筛选项索引值triggerType:String 触发类型 triggerType详解 包含三种触发类型...Navbar:来自筛选头的点击触发Mask:来自背景层的点击触发Panel:来自Panel 的 onChange 回调触发 Function Filter prop navConfig 数组配置详解...比如 onChange 回调,或者面板隐藏的回调以及当前哪一个 panel 需要展开等。 由于 Panel 的面板复杂度我们未知。

1.7K30

精读《怎么用 React Hooks 造轮子》

React Hooks,将 React 组件打造成:任何事物的变化都是输入源,当这些源变化时会重新触发 React 组件的 render,你只需要挑选组件绑定哪些数据源(use 哪些 Hooks),然后只管写...拿到组件 onChange 抛出的值 效果:通过 useInputValue() 拿到 Input 框当前用户输入的值,而不是手动监听 onChange 再腾一个 otherInputValue和一个回调函数把这一堆逻辑写在无关的地方...minLength={8} /> ); 上面可以通过 formState 随时拿到表单值,和一些校验信息,通过 password("pwd") 传给 input 组件,让这个组件达到受控状态,且输入类型是...password 类型,表单 key 是 pwd。...实现:仔细观察一下结构,不难发现,我们只要结合 组件辅助 小节说的 “拿到组件 onChange 抛出的值” 一节的思路,就能轻松理解 text、password 是如何作用于 input 组件,并拿到其输入状态

2.4K40
领券