V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
asen001
V2EX  ›  React

被 antd 惯坏了,别的组件库用的很难受,大家有这种感觉吗?

  •  1
     
  •   asen001 · 31 天前 · 4982 次点击

    我本人一直用 antd 开发,最近有点审美疲劳想找点新鲜玩意。 试了一圈英文社区推荐的组件库( shadcn mantine chakra 等),功能上都不如 antd 方便,不说太复杂的功能,异步关闭确认框这种常见的功能都得自己封装,不然就得哼哧哼哧写一大坨。 开发后台 dashboard 应用,除了 antd 还有别的更好的选择吗?

    55 条回复    2025-03-06 17:33:09 +08:00
    yiqiao
        1
    yiqiao  
       31 天前
    在用这个,也是海外的
    https://www.naiveui.com/en-US/
    zhoumin9602
        2
    zhoumin9602  
       31 天前
    英文社区的组件都是这样吧,就类似 react 一样,只给你提供基础的功能,想要实现稍微复杂的功能,就要自己去实现。 国内的一般都是功能齐全,除了 antd 不还有很多其他组件吗,字节的 https://arco.design/ ,https://www.naiveui.com/
    murmur
        3
    murmur  
       31 天前
    开发 dashboard 我们都用帆软的
    murmur
        4
    murmur  
       31 天前
    @yiqiao 图森公司爆雷了,我怕这 ui 撑不下去了,我们也在用
    qW7bo2FbzbC0
        5
    qW7bo2FbzbC0  
       31 天前
    react95
    Ayanokouji
        6
    Ayanokouji  
       31 天前   ❤️ 1
    @yiqiao
    @zhoumin9602
    op 发的是 react 区,而且上面的框架也是 react 的,你们推荐个 vue 的。。。
    XTTX
        7
    XTTX  
       31 天前
    shadcn 一出来就用到现在, 第一次听到这种槽点。
    yiqiao
        8
    yiqiao  
       31 天前
    @Ayanokouji antd 也有 Vue 的哈哈哈,没注意 React 区
    那就 google 家的 https://mui.com/ 但我感觉都不如 antd 的
    Jaosn
        9
    Jaosn  
       31 天前
    没有,不得不说 antd 就是标杆
    yhxx
        10
    yhxx  
       31 天前   ❤️ 5
    同感
    虽然 antd 问题也很多,但是国外的那些真的。。。
    还有很多人跟风狂吹那几个 shadcn 、radix 的,我很怀疑他们有没有真正拿来做过复杂一点的项目
    我同意它们提出了全新的理念,甚至有可能引领了未来的方向
    但是对日常 CRUD 来说,antd 一把梭下班回家了,你还在那折腾各种 unstyled 组件,加各种 variant ,然后发现基础功能还得自己补
    hyh0u0
        11
    hyh0u0  
       31 天前 via Android   ❤️ 1
    mantine 不错
    bestie
        12
    bestie  
       31 天前   ❤️ 1
    @XTTX 但是我不得不赞同 OP 的观点,之前看到 shadcn 就觉得非常喜欢这种简约的风格,开新项目的时候尝试了下,结果一个表单给我整不会了,真的什么都要自己封装,得用 react-hook-form ,得用 zod ,里面的 item label control 拆得细细的,不得不说确实灵活,但是写业务搞起来确实麻烦了点,特别是新开坑,遂放弃了继续用 antd
    zhwithsweet
        13
    zhwithsweet  
       31 天前
    XTTX
        14
    XTTX  
       31 天前   ❤️ 1
    @bestie
    1.composition 是 shadcn 之前就被提倡的方式。习不习惯看个人,国外的项目都这么写. 好处就是风格统一和重复利用。
    2. 你说的 Form 用到 react-hook-form, zod, 我看来是优点. validation 和各种 form 的状态, 不是单个 ui lib 能解决的。
    3. component 都在你自己的 src 里,自己愿意怎么改就怎么改。 我用 antd 月历,想改个当天的红点,找半天 api, 网上说的版本 api 还都不一样。
    4. shadcn 弄明白一次,下次就让 AI 写了。 有代码可以参考,不然 AI 还要去猜各式各样的 api.
    XTTX
        15
    XTTX  
       31 天前
    @yhxx "跟风狂吹" "复杂一点的项目", 你都这么说了,那也确实。
    daliusu
        16
    daliusu  
       31 天前
    antd 实际也还是自己二次封装一批更集成化的组件更好使
    loryyang
        17
    loryyang  
       31 天前
    我作为一个后端,偶尔写写前端,不得不说,antd 真好用,非常傻瓜
    johnnyNg
        18
    johnnyNg  
       31 天前   ❤️ 1
    Torpedo
        19
    Torpedo  
       31 天前
    是你习惯 antd 那套 api 了吧。之前国内一些组件库开发的时候就会设计和 antd 类似的 api
    asen001
        20
    asen001  
    OP
       31 天前
    @Torpedo 所以有种被惯坏了了的感觉
    asen001
        21
    asen001  
    OP
       31 天前
    @XTTX #7 如果细细打磨产品,用这个可能合适。而且默认的主题太素了,领导一看就不行
    XTTX
        22
    XTTX  
       31 天前
    @asen001 https://www.pomocal.com/ 肯定不能直接用 shadcn 默认颜色,css 和 tailwind 里设置一下就行了。整体风格上能达到统一。
    sleepm
        23
    sleepm  
       31 天前
    semi 字节的
    chesha1
        24
    chesha1  
       31 天前
    @XTTX #7 shadcn 生态差 antd 和 mui 太多了,而且官方更新缓慢,功能不行是事实,不适合大部分写业务的
    joetao123
        25
    joetao123  
       31 天前
    在 ChatGPT 的加持下,类似 shadcn/ui 和 tailwindcss 的组合用来起很舒服,灵活度很大,大模型支持也很好,搭配 v0.dev 体验更上一层楼。
    我之前也是从 antd+umi 转过来的,现在更喜欢用 shadcn/ui+tailwindcss+vite 的组合。这是用这个组合做的一个 demo: https://xryder.cn
    XTTX
        26
    XTTX  
       31 天前
    @chesha1 都已经是事实, 那还有啥好说的. 给个 demo 让我学习学习。
    zhengfan2016
        27
    zhengfan2016  
       31 天前
    弱弱的问一下,antd 是不是 bug 很多,这个月面试碰到一个主用 vue3 的面试官,它问我用 antd 有没有碰到什么 bug ,我回答没有,它说它用 antd 碰到的 bug 很多,真的是这样吗
    zhengfan2016
        28
    zhengfan2016  
       31 天前
    promise 关闭确认不难吧,这个自己封一下 50 行内就解决了,我的习惯就是自己封。

    至于其他的我没碰到场景,也不知道 antd 比 shadcn 有什么优势。

    说实话,我感觉我有点被 shadcn 这些 tailwind ui 库惯坏了,切换其他 ui 库就完全不会改组件样式了
    zhengfan2016
        29
    zhengfan2016  
       31 天前
    @chesha1 哥们,你们用 mui 一般怎么改样式的,就比如把下拉框的 rounded 改成 12px ,border 边距 2px ,水波纹去掉,按设计稿的样式 100%还原那种,我之前试过在 style 里改,有时加了 important 都不能覆盖掉 mui 的原来的样式,想办法覆盖样式很费时间。
    chesha1
        30
    chesha1  
       31 天前
    @XTTX #26 没有 demo ,但是看一眼官方就知道生态差距了,没什么好争论的。我唯一用的 react 组件库就是 shadcn/ui ,虽然用,但是感觉确实是玩具
    chesha1
        31
    chesha1  
       31 天前
    @XTTX #26 打错字了,“官方”应为“官网”
    XTTX
        32
    XTTX  
       31 天前
    @chesha1 生态这个词高级啊。
    yhxx
        33
    yhxx  
       31 天前
    @zhengfan2016 这是面试技巧了

    下次可以这样回他:我上个月遇到了 Antd 里 Message 组件的静态方法无效的问题,起初我以为是 Context 丢失的问题,因为静态方法并不会消费上下文,它会独立于当前 React 生命周期,balabala ,但是随后验证发现不是这个问题,深入 Antd 源码发现是 ReactDOM.render 方法没有成功,但是前几天还是正常的,随后深入了解发现 React19 中 react-dom 调整了 balabala 。。。随后扯一段 createRoot 、hydrateRoot 看看能不能唬住他。
    也要说一下我的临时解决方案是 balabala ,长久方案是 xxxx
    还可以继续锁依赖版本,pnpm 之类的再扯一段,这面试时间一共就一小时,不就耗掉了一大半了

    只是随便举个例子,不一定严谨,不能直接说没遇到过呀,这就没法聊下去了


    至于 antd 本身的 bug ,直接去 issue 区看看就知道了
    996jiucai
        34
    996jiucai  
       31 天前
    antd 用的人多,虽然有之前的圣诞节事件。但是大家还是在用的。
    用的人多,就是一些比较明显的 bug 不会有。如果你图新鲜用那种人少的库,自己做项目还行。真用到公司项目上面,就很麻烦,不是功能不完整,就是有些基础 bug 。大家就是上个班而已,怎么省事怎么省心怎么快,怎么来。要是想造轮子,下班自己造去。
    Mithril
        35
    Mithril  
       30 天前   ❤️ 1
    antd 的好处就是各种常见功能都有,非常适合领导一拍屁股,“你看看那谁家的 xxx 功能,对就要个那样的玩意”,这种开发模式

    缺点就是你想要做个别人家没有的功能就开始头疼了,折腾半天总也调不对的时候就还不如找个啥都没有的框架从头弄。
    foufoufm
        36
    foufoufm  
       30 天前
    @murmur 请教一下是帆软的 bi 吗?
    DCNGAWE
        37
    DCNGAWE  
       30 天前
    https://semi.design/ 这个不错 抖音的
    julio867
        38
    julio867  
       30 天前
    早几年用过 AntDesign 的 vue 版本~
    比较了阿里、腾讯、抖音、饿了么等的 UI 框架,最后感觉抖音的 semi-design 的 UI 是我喜欢的风格,所以最后就用在我自己开发的后台管理系统~
    真正用起来发现,如果只是满足简单的 CRUD 是可以用的,但如果考虑到更好的用户体验和交互,就需要做二次封装,甚至需要自己开发新的组件~
    而且 semi 的问题是,它不是面向社区使用的,而是优先满足抖音自己内部的需要,所以官方也一直不出 Pro 脚手架~
    另外,作为前端开发者,我越发觉得一个东西越“通用”就越“复杂”~
    xingguang
        39
    xingguang  
       30 天前
    以前用的 antd 比较多,现在用 mui ,是在是感觉很多地方不方便,mui 修改组件的默认样式有好多种办法,还有不同的优先级,一不小心就被覆盖了优先级了,更可恨的是 mui 组件的样式被人在全局的 css 定义中修改了而且加上了 important ,导致很多时候会被这个 important 覆盖,挺烦人的
    wzzx
        40
    wzzx  
       30 天前
    material ui 自定义比 antd 好
    zbowen66
        41
    zbowen66  
       30 天前
    @XTTX #12 连个多选框都没有,单选框也不支持搜索(更别提远程搜索了),得用交互差很多的 Combobox 才能实现。或者是用 popover+input ,这个组合也是一堆问题。当然也可以抄别人实现好的,如果什么都要自己想办法,那 shadcn 作为组件库的意义是什么?灵活和强大不可兼得,人生苦短,我站 antd
    zbowen66
        42
    zbowen66  
       30 天前
    @wzzx #38 我要不是用过我真信了
    cuzfinal
        43
    cuzfinal  
       30 天前
    https://www.heroui.com/ 应该比 shadcn 强点,用着更省心
    wzzx
        44
    wzzx  
       30 天前
    wzzx
        45
    wzzx  
       30 天前
    @zhengfan2016 1.修改全局下拉框样式 2.sx 里修改
    IamUNICODE
        46
    IamUNICODE  
       30 天前
    从 vuetify 转到 antd ,感觉耳目一新
    XTTX
        47
    XTTX  
       30 天前
    @zbowen66 辣眼睛...
    raphaelsoul
        48
    raphaelsoul  
       30 天前
    @murmur naive ui 怎么了?
    murmur
        49
    murmur  
       30 天前
    @raphaelsoul naiveui 不是图森公司搞的么,以前搞卡车自动驾驶,后来不行又在做游戏,然后广州工作室 2 月也出问题了
    zbowen66
        50
    zbowen66  
       30 天前
    @XTTX #45 丧失语言能力了吗?辩都不辩了?
    esee
        51
    esee  
       29 天前 via Android
    @murmur 啊?什么情况,我后面项目都上他了,可别出事了
    XTTX
        52
    XTTX  
       29 天前
    @zbowen66 哈哈. 确实短暂失去语言能力了, 因为确实辣眼睛。我要是没有写过 input 远程搜索就真让你装到了。
    你还要要我辩? shadcn 这一类的 opencode 和 node_modules 里的第三方组件就是两种东西。

    1. 有另外一半世界, 别人愿意用 opencode ,别人愿意自己写状态管理,愿意去改 tailwind classname 。 那些人不愿意浪费时间 怎么去 overwrite Antd 的样式。
    2. 你啊,多搜一下基于 shadcn 衍生出来的各种组件,应该是能找到你想要交互方式。或者其他同类型的 opencode 。
    3. 你爱短就短,要爱就用, 不爱用就不用。至少理解一下为什么 shadcn 会火,tailwind+opencode+ 安装方式。
    4. @asen001 op 说‘不然就得哼哧哼哧写一大坨’, 我刚看还有点诧异,现在理解了。 我很久很久没有写一大坨了,AI 都能理解 composition ,然后写个 7788.
    zbowen66
        53
    zbowen66  
       29 天前
    @XTTX #49 我怀疑你搞错我的意思,我只是说 shadcn 作为组件库,功能和效率很差劲(相对 antd 来说),并没有贬低它的设计/架构模式,也没有对它的热度有什么疑惑。

    关于第二点,是搜了好几个选择框,刻意挑了一个能在 trigger 里面直接输入搜索的实现,然后复制粘贴->添加 N 多功能->遇到底层 UI 问题->重构->回归类似 Combobox 不完美的交互。项目越来越大,功能越来越多,并不是随便搜一个就能满足需求的,当然现在也积累了一些组件,但是我还是觉得花费的精力有些不值得,这本应该是组件库的工作。
    XTTX
        54
    XTTX  
       29 天前
    @zbowen66 用惯了就好了。前端不就那回事吗?为了能全盘统一风格, 值不值得看你自己了。 我用了 antd 的月历,要改个当天红点的样式找半天,还不如自己写。composition + open code 会越来越来普及。ai 下会更普及 ,AI 可以改 src 里的组件.

    而且 shadcn 作者就没有把 shadcn ui 定义成组件库。这之间有很大区别。效率都是自己用出来的,用积木的组合方式对我来说很快。
    BigEarMosquito
        55
    BigEarMosquito  
       22 天前
    有没有功能和 ext.js 一样丰富的 react 框架?用了 ext.js 感觉什么功能都有。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2587 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 15:12 · PVG 23:12 · LAX 08:12 · JFK 11:12
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.