请教下 react 前端如何封装页面组件 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ZGame
V2EX    前端优化

请教下 react 前端如何封装页面组件

  •  
  •   ZGame 311 天前 1967 次点击
    这是一个创建于 311 天前的主题,其中的信息可能已经有所发展或是发生改变。

    1.要求就是让后端业务,不要触碰到 useEffect, useState,等基础 react 函数, 以及类似 vue 插槽那样,尽量保持 react.node 嵌套 保持在两三层内。
    根据项目需求封装常见的列表页面,表单页面,和业务组件,尽量减少业务的前端心智负担。不需要 json 渲染组件。 这个有啥开源的参考吗 ,还是有啥好的思路

    9 条回复    2025-02-21 12:54:47 +08:00
    songone
        1
    songone  
       311 天前
    以前做过的,提供一个思路:可以用 nodejs 做脚本,然后把常见的页面文件封装成模版,后端运行脚本,传入一些可以定义的参数,就生成对应的页面文件,这样后端只要按照页面上的示例去改就行了
    ZGame
        2
    ZGame  
    OP
       311 天前
    @songone 脚本估计暂时不考虑 就是可能还是用 react 去写 但是尽量只做业务上的修改
    langhuishan
        3
    langhuishan  
       311 天前
    这不就是模版引擎吗?
    moooooooo
        4
    moooooooo  
       311 天前
    组件只接受 RESTful 的 api 的话是不是就可以了
    DICK23
        5
    DICK23  
       311 天前
    说实话我没看懂需求,类似直接返回 jsx 模板代码?
    ZGame
        6
    ZGame  
    OP
       310 天前
    @DICK23 我觉得应该是类似 ant design pro 那种风格 ? 尽量让业务少接触 react 原生的东西
    Charrlles
        7
    Charrlles  
       310 天前
    参考 ant design pro 就好了,把请求都接管过来,数据再通过 children 传出去,比如`<Component request={getData}>{(data) => (<div>xxx</div>)}</Component>`,这样使用者甚至都不需要用到 useState 。然后一些需要通过交互来获取数据的组件,比如 Modal ,可以通过 forwardRef 暴露一个 open 方法,用来在点击的时候传入数据。还可以加上一些自定义 hook 来封装常用业务,使用者只管 useHook ,接触不到 useEffect ,useQuery 之类的库就是这么干的
    paopjian
        8
    paopjian  
       310 天前
    你这是要搞低代码么,我们项目是把 vue 组件写好后打包成 umd 格式, html 里直接引用 script, 组件就能直接用了, 剩下的就是传 props
    superedlimited
        9
    superedlimited  
       310 天前 via iPhone
    页面最外层直接强制使用 rsc 。rsc 里无法使用 hooks ,需要交互的地方抽组件出来。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5587 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 03:20 PVG 11:20 LAX 19:20 JFK 22:20
    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