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

低代码平台前端的设计与实现(四)组件大纲的构建设计

我们需要将ComponentNode objectselectedNodePath再交给组件大纲进行渲染。 在这样一套设计下,无论点击大纲任意树节点,还是点击设计态UI界面的任意UI组件。...这个过程由下面的流程图来简单描述: 大纲组件实现 首先,我们选择antd5的Tree树形组件。...当然,一旦我们选择该组件以受控方式使用,那么不可避免的需要用对应的onSelect事件onExpand事件来获取当前状态值,再交给上述的selectedKeysexpandedKeys。...Tree组件的基本用法 本节内容主要讲antd5的Tree树形组件的基本用法,目的是为了后面我们具体的大纲组件做基础准备,可以完全当作独立的一节内容来看。...类似的,我们使用一个state来存储展开的节点,然后使用onExpand事件来设置,即可达到效果: 组件大纲面板 有了上面关于antd5的Tree树形组件的受控方式的使用基础,我们开始设计我们自己的组件大纲组件

28130

三分钟迁移 antd@4

升级点 首先对我而言最大的改进在于性能,select ,table tree 已经全面支持了虚拟滚动,作为了早早的使用了 rc-tree来解决性能问题的人,antd@4 中提供自然是更好不过了,毕竟自己写样式动态是非常复杂的...重写的 table from 解决很多遗留的疑难杂症,具体可以查看豆酱老师的 antd@4 系列文章[2],里面详细写了心路历程,在 form 中我们不需要使用 getFieldDecorator...迁移方法 antd@4 变得更加多才艺,带来了巨量的提升,那我们怎么才能使用到这么棒的 4.0 呢 , 其实很简单,Pro 已经全部迁移了一把[4] 。...为了更加的语义化,icon 将从 i 标签修改为 span 标签,改完之后需要记得去查看一下有没有类似 i{},i.anticon 等用法,如果有可以修改为 span{}, span.antion 来保证迁移完成的样式问题...Pro中使用 Pro 在第一时间也迁移了 antd@4 ,我们只需要在 create umi 中选择 ant-design-pro,即可获得最新的 4.0 分支代码。

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

揭秘 antd mobile “IndexBar” 的实现思路

“文章由我同事卡晨(antd mobile 作者)投稿,揭秘 antd mobile IndexBar 的实现过程。...如果只考虑主内容区的列表,那思路想必非常明了:IndexBar 渲染一个最外层的容器,Panel 渲染一个带标题的列表。逻辑各自都是封闭的,互不依赖干扰。...最后,我们需要要 我们的选择 刚刚提到的 Hack Context 的确很好,已经满足了我们的各项标准要求。性能不至于很差,至少是可以优化到性能达标的;鲁棒性虽然算不上特别的健壮,但也完全说得过去。...但是在 antd-mobile 中,我们最终还是选择了返璞归真:React.Children.forEach。...“附:感谢 @GOWxx[2] 发现 antd-mobile 中 IndexBar 组件存在的问题,感谢 @zzzgydi[3] @p697[4] 参与讨论贡献思路。

98730

「前端组件化」以Antd为例,快速打通UI组件开发的任督二脉

当时项目开发都使用现成的UI组件,最初用Element UI,后来换成了Antd。无论换哪种组件,都帮助节省了很多开发时间,自己平时组件开发,最多就进行一些简单的标题、弹窗、表格的二次封装。...每个系统,无论是业务特性、交互特性还是UI特性,都可以整理出一部分通用组件,比如标题、页面布局、列表、可编辑表格、模糊搜索框等以列表为例Antd有现成的Table组件,但是我们实际开发中,一般列表管理页是带搜索项以及数据展示的...参数支持类型可以是number类型,也可以是Object类型。使用typeof判断参数类型。...两种展示方式,横向纵向。不同展示类型,数值类、自定图标类、点状类。内容展示,标题、子标题、详情描述。...其中单元格的标签会根据传入的component的值不同,使用不同的标签,默认为td,表头thead传入的为tr。

1.9K10

Ant Design 4.0 发布,来看看如何升级?

Selected 颜色 Hovered 颜色进行了交换。 全局阴影优化,调整为三层阴影区分控件层次关系。 气泡确认框中图标的使用改变,由问号改为感叹号。...DatePicker 交互重做,面板输入框分离,范围选择现可单独选择开始结束时间。 Table 默认背景颜色从透明修改为白色。 Tabs 火柴棍样式缩短为和文字等长。...在 4.0 中,我们调整了图标的使用 API 从而支持 tree shaking,减少 antd 默认包体积约 150 KB(Gzipped)。...DatePicker 重写 提供 picker 属性用于选择器切换。 范围选择现在可以单独选择开始结束时间。 onPanelChange 在面板值变化时也会触发。...{ console.log('OK'); }, onCancel() { console.log('Cancel'); }, }); 遇到问题 v4 做了非常的细节改进重构

5.9K10

react全家桶包括哪些_react 自定义组件

tree shaking,对于 js 部分,直接引入 import { Button } from 'antd' 就会有按需加载的效果 2.1 在 create-react-app 中使用 //...安装 npm i antd // 2. 修改 src/index.js,引入 antd/dist/antd.css import 'antd/dist/antd.css' // 3....后,如 /home/1/标题 /* 动态路由传参 */ // 传数据的组件 <NavLink to={ `/home/${ 1}/标题`}>Home <Route path="...Redux 的三大核心概念 4.2.1 store 单一数据源 整个应用程序的state被存储在一颗object <em>tree</em>中,并且这个object <em>tree</em>只存储在一个 store 中 Redux并没有强制让我们不能创建多个...createStore(reducer, [preloadedState]) 创建包含指定 reducer 的 store 对象 参数 reducer (Function): 接收两个参数,分别是当前的 state <em>树</em><em>和</em>要处理的

5.7K20

使用ReactNode.js制作音乐类App的一次总结

一、技术选型 语言选择: JavaScript TypeScript 最终选择了JavaScript作为开发语言,一开始尝试使用TypeScript,但是由于是移动端,antd-mobile的库与...setState的异步同步问题,其实就是上面的事件机制,这个问题遇到的还是非常的,如果搞不懂,那么调试起来非常困难 React中追求组件化,个人喜欢组件化到极致,这样方便调试,在使用TSReact...配合时,调试真的非常简单 prop-types限制传入的props的类型(隐约有TS的影子) 高阶函数的使用 React中对于大量的重复逻辑函数,使用函数柯里化给予默认参数封装成高阶函数使用 高阶组件也是用得非常...React的diff算法,三种diff模式: Tree diff是优先对比两棵的同级别DOM节点,所以尽量不要将DOM节点彻底删除,否则会让React的render()时间变长,具体在操作样式时候这点会非常明显...antd-mobile的按需加载需要配置更多,图标功能也更少。

2.1K10

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

如果原生语言具有默认 heading aria-level 元素,例如HTML标题标签,可以使用原生语言元素。 button 元素是 heading 元素内的唯一元素。...包含操作确认提示错误消息确认。alertdialog 角色能够让辅助技术浏览器从其他对话框中区分出警告对话框,这样就能给予警告对话框特殊对待,例如播放一个系统警告提示音。...如果树结构允许用户一个动作只选择一个项目,那么它被称为单选择(single-select tree),而且被聚焦的项目还有一个被选中的状态。...例如,在一个典型文件系统导航器中,用户可以一次性地移动焦点来选择任意数量的文件,例如复制或移动。为已选定具有焦点的项目提供视觉上的设计区分,这非常重要。...拥有角色 tree 的元素拥有被 aria-labelledby 引用的可见标签或拥有指定值的 aria-label 属性 。

4.4K30

文章页面目录自动生成方案

竟然是给标题元素加了一个带有id属性的a标签的子节点。不过它生成id的方式比较简单,单纯的"字符串_编号"而已,想来并不是那么可靠(难于保证编辑器外有相同id的元素)。...我大体有了一个基本的思路: 既然是对于任意页面都可用,那可以遍历DOM,寻找需要导航的标签,然后把相关节点位置信息存储起来。...在所有页面中,并不能单纯根据h1,h2等标签名来判别一个元素是否要导航,所以想到了用选择器来确定,同时添加根据选择器来排除一些例外的元素。...查找出所有导航元素,插入对应锚点,并将锚点信息导航元素标题存到list中。...比如element或者iview的组件都可以。不过因为曾经对elementiview的树形组件不甚满意,自己写过一个树形组simple-vue-tree件并且发布到了npm。

1.3K10

如何为antdTree组件添加右键菜单

最近在用 antd v4 的 Tree 组件时,想给 Tree 组件添加一个右键菜单功能,最初的想法是看看 antd 官方有没有提供现成的方法,遗憾的是,官方并没有给出一个统一的方法,只是建议大家先使用社区提供的组件...方法一 思路是使用 antd 提供的 Dropdown 组件 Menu 组件,结合 Tree 组件提供的 titleRender 属性来实现,核心代码如下: import { Tree, Dropdown...这种方式最简单直接,利用 antd 组件库提供的现有组件api即可实现。 那么除了这种方式之外,还有别的方式可以实现右键菜单呢?...接下来我就介绍下另一个 antd Tree 组件实现右键菜单的方式。 方法二 第二种方法可以利用 onBlur 事件实现。 HTML标签提供了 tabIndex 属性。...的 Tree 组件添加右键菜单,第一种方式比较常规,直接利用 antd 提供的现成的组件即可实现。

3.8K30

年轻人的第0条爬虫 | 如何最快理解工具思维_以八爪鱼为例

流程图的亚子 0.1 DOM DOM Tree是指通过DOM将HTML页面进行解析,并生成的HTML tree树状结构对应访问方法。...(这里模糊了DOMhtml结构的概念,仅为方便理解结构) DOM展示了html页面(即通常意义上理解的“网页”)的基本结构,由标签组成。...浏览器根据html代码解析出DOM,进而才能渲染出页面中的元素。也就是说,页面的布局标签的位置关系是息息相关的。...• 调试模式 在Chrome中按f12(部分笔记本是fn+f12)可以打开调试模式,看到html代码的详细结构,便于我们观察定位标签,理解DOM。选中标签,网页中对应被渲染的元素会高亮。...• 表示页面中的标题。“几”表示标题字体大小,1-6数字越小字体越大。 • …… 还有很多其他种类的标签,这里只是列举了几种一般会用来作为列表收纳数据标签标签,具体可自行查阅。

87510

一文读懂MySQL的索引结构及查询优化

就好比给你一本书一篇文章标题,如果没有目录,让你找此标题对应的文章,可能需要从第一页翻到最后一页;如果有目录大纲,你可能只需要在目录页寻找此标题,然后迅速定位文章。...为什么使用B+Tree# 首先需要澄清的一点是,MySQL跟B+没有直接的关系,真正与B+有关系的是MySQL的默认存储引擎InnoDB,MySQL中存储引擎的主要作用是负责数据的存储提取,除了InnoDB...(2) 红黑 红黑(Red Black Tree)是一种自平衡二叉查找,在进行插入删除操作时通过特定操作保持二叉查找的平衡,从而获得较高的查找性能。...(3) B-Tree B中的B代表平衡(Balance),而不是二叉(Binary),B是从平衡二叉演化而来的。...页是计算机管理存储器的逻辑块,硬件及操作系统往往将主存磁盘存储区分割为连续的大小相等的块,每个存储块称为一页(许多操作系统的页默认大小为4KB),主存磁盘以页为单位交换数据。

80420

antd pro v5 tab标签卡(标签页)实现

标签页很多公司的后台管理系统都会有这个需求,之前用vue一般架子也是带的,现在公司用了antd pro ,看了下官方不支持,确实会影响性能,但是架不住需求。...github.com/alitajs/alita/tree/master/packages/tabs-layout 另外我还找到了一个插件也可以实现: https://github.com/fangzhengjin...标签卡选用Tabs组件+ Route 标签加key缓存 dva来实现数据管理,也可以选用别的,能全局操作即可。...具体逻辑就是,写一个TabsView 组件,在Layout chlidren的时候嵌套上Tabs 页签卡这一层。...key是pathquery的合集,这样能满足需求 * 利用dva组织数据 * 动态加载组件,组件利用key关联 */ import type { Reducer } from 'umi'; import

5K31

「Taro开发」前端多端开发,Taro观赏指南

背景最近接到多端开发,因为老项目使用的React,考虑到迁移成本,选择了Taro,迁移成本相对较低,且上手较快。Tarouni-app我做了一下调研,目前市面上优秀且成熟的开源框架有很多。...其中,Tarouni-app作为两大“豪门”框架,优秀之处各有千秋,为我提供了更多的选择项。...这个选择是在项目初始化的时候选择的,如下图:项目迁移直接把文件拷贝过来,然后进行调整,主要调整的内容有以下几个部分UI框架的调整原来的项目使用的是antd-mobile,迁移之后改成了@antmjs/vantui...,这个区别Taro也做了区分,为此我写了一个公共方法做跳转的统一处理。...Taro v3.3以前是不支持使用HTML标签的,使用的是Taro提供的View、Text等标签,这些在Taro的组件库中有详细介绍。

1.8K10

大规模异步新闻爬虫【5】:网页正文的提取

-新华网 观察这些title不难发现,新闻标题频道名、网站名之间都是有一些连接符号的。那么我就可以通过这些连接符吧title分割,找出最长的部分就是新闻标题了。...我们知道,网页的html代码是由不同的标签(tag)组成了一个树状结构,每个标签的一个节点。通过遍历这个树状结构的每个节点,找到文本最多的节点,它就是正文所在的节点。...它收集了一些经常出现在标签的classid中的关键词,这些词标识着该标签可能是正文或者不是。我们用这些词来给标签节点计算权重,也就是方法calc_node_weight()的作用。...首先,它先获得标签的内容,然后试着从里面找title,再尝试从里面找idclass包含title的节点,最后把从不同地方获得的可能是标题的文本进行对比,最终获得标题...从标签里面获得标题,就要解决标题清洗的问题。

1.5K30

详细剖析|袋鼠云数栈前端框架Antd 3.x 升级 4.x 的踩坑之路

rc-select-tree 是 rc-select 结合 tree 写的一个组件,相似但又不同,searchValue 就是其中一点,也不是没人提过 issue,只是人的忘性很大,时间长了就忘了、混淆了...这样我们就可以直接复用选择框部分的代码,而自定义 Select TreeSelect 对应的列表或者树形结构了。...Tree Tree 组件取消 value 属性,现在只需要添加 key 属性即可。 特别注意, 此问题会导致功能出问题,需要重点关注!!!...Button 在 antd 3.0 中危险按钮采用 type。 使用如下:涉及改动点 type、dangr 属性。 Tabs 使标签页不被选中。...// 3.x activeKey={undefined} // 4.x activeKey={null} 总结 该篇文章详细讲解了数栈前端团队如何从 antd3 升级到 antd4 的详细步骤,以及团队在实践过程中发现的一些问题对应的解决方案

4K30

React 折腾记 - (1) React Router V4 antd侧边栏的正确关联及动态title的实现

免得浪费您的时间 ---- 效果图 基于antd的sidebar组件封装 ? ?...为什么不在组件初始化的时候就设置,那这样对于404的路由没法控制 react-router-dom v4虽然提供了全局404组件,但是history里面没有代表404的状态 实现目标 点击侧边栏的子菜单会改变标题...,对应的item也会高亮 直接修改路由,初次加载等会自动展开对应的分组,高亮对应的子项 不匹配的路由不展开高亮任何 能学到啥 我尽量注释,而收获见仁见智了 我的思路?...,如下 如何生成漂亮的目录 alias gdtree="tree -I 'node_modules|dist|.git|.vscode|.DS_Store|.idea' -L 2 -a" 我直接写到环境文件里了...有人肯定会说,官方有现成的antd pro为嘛不用..我看了跟dva高度结合,不喜欢,那就自己搭架子 之前用vueng都是整个系统布局自己写一遍...这次试试用现成的侧边栏来实现 有不对之处请留言,看到会及时修正

2.9K30

React动态添加标签组件

背景 在前端开发的过程中,一些表单的输入经常需要输入多个内容,如果采用一个输入框+逗号分隔的方式,展示起来不是很清晰,一般需要采用标签的方式 需求 可以指定空状态时的标题 设置标签颜色 每个标签的最大长度...(字符数) 接口传递的时候的分隔标记(是用逗号,还是其他) 直接处理表单,不需要二次处理 所以需要传入以下内容给该组件 title:标题 separator:分隔标记 maxLength:最大长度 color...:颜色 form,name:处理的表单对应的字段 const { title = '新增一个', separator = ',', maxLength = 40, color = 'orange',...onBluronPressEnter方法 <Input ref={saveInputRef} type="text" size="small" style={{ width: 78 }...给Tag设置closableonClose方法 const tagElem = ( handleClose(tag)

33660
领券