一个非常灵活的 react 表单生成器,支持 ui 和数据结构异构,求围观 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
MorningStar0
V2EX    分享创造

一个非常灵活的 react 表单生成器,支持 ui 和数据结构异构,求围观

  •  1
     
  •   MorningStar0 2021-05-28 14:16:27 +08:00 3212 次点击
    这是一个创建于 1648 天前的主题,其中的信息可能已经有所发展或是发生改变。

    同事老哥搞了个 react 的表单生成器,主要是解决大量表单项编写和数据双向绑定时,各种数据异构的问题 https://github.com/007sair/formik-form-render.git

    Demo&文档地址: https://007sair.github.io/formik-form-render/demo

    13 条回复    2021-05-31 20:34:09 +08:00
    MorningStar0
        1
    MorningStar0  
    OP
       2021-05-28 16:47:48 +08:00
    求大佬们提提意见
    shakukansp
        2
    shakukansp  
       2021-05-28 18:20:33 +08:00
    表单验证……现在用 vuelidate-next, 然后自己写一个简单的验证样式注入器,往 slot 里面塞任意组件库的组件都行,只要往上面加带 v-deep 的 class 就能注入样式,还可以自定义错误的显示方式,tooltip 或者换行文字、inline 文字提示都可以

    比什么生成器都灵活
    MorningStar0
        3
    MorningStar0  
    OP
       2021-05-29 16:35:19 +08:00
    @shakukansp 这个是 react 啊。。。。
    shakukansp
        4
    shakukansp  
       2021-05-29 16:58:57 +08:00
    @MorningStar0 思路一样
    MorningStar0
        5
    MorningStar0  
    OP
       2021-05-29 18:20:31 +08:00
    @shakukansp 这个生成器主要解决 ui 的嵌套结构和数据的层级异构的问题,而且 react 在表单状态缓存的思路基本没法借鉴 vue,因为 react 本身就不太建议做这种状态的存储
    jason94
        6
    jason94  
       2021-05-31 09:43:28 +08:00
    表单联动那块好像有 bug,ui 是更新了,但是值没有生效。
    而且联动才显示的字段,在隐藏时候,这个字段是不是不应该存在的,给值也应该是 undefined 。
    MorningStar0
        7
    MorningStar0  
    OP
       2021-05-31 11:52:38 +08:00
    @jason94 配置里的显示或隐藏目前是只对 ui 的展示做了更新,目前没有对最终输出做更新。
    而且 ui 的展示完全受输入数据 (template 的值) 的控制,这意味着,如果输入数据内没有这个值, 即使 UI 配置( forms 的值)中写了这个组件的渲染,这个组件也不会出现。
    MorningStar0
        8
    MorningStar0  
    OP
       2021-05-31 11:55:26 +08:00
    @jason94 这样设计主要是想 把同一个 UI 的配置应用给不同的数据,就比如 Echarts 那种特别多配置的情况
    whatacold
        9
    whatacold  
       2021-05-31 12:03:58 +08:00 via iPhone
    刚学不久,react 也能双向数据绑定吗?我看文档好像只能单向。
    MorningStar0
        10
    MorningStar0  
    OP
       2021-05-31 13:09:59 +08:00
    @whatacold react 本身是没提供类似的 api,但是可以在上层封装下
    MorningStar0
        11
    MorningStar0  
    OP
       2021-05-31 13:15:24 +08:00
    @whatacold 当然也可以在组件的 onchange 事件里,手动 setState,然后 value={thatState}也能做成双向的
    whatacold
        12
    whatacold  
       2021-05-31 18:55:33 +08:00 via iPhone
    @MorningStar0 大概明白了,谢谢。
    skyfore
        13
    skyfore  
       2021-05-31 20:34:09 +08:00
    推荐 [formilyjs]( https://formilyjs.org/#/bdCRC5/dzUZU8il),自己用过,拆分了逻辑层与 UI 层,可以自己注册业务组件。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1067 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 23:18 PVG 07:18 LAX 15:18 JFK 18:18
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86