这个世界上这么多 React 应用,
每时每刻,会有多少函数和对象,在一次次的 render 过程被创建又被立马丢弃。
虽然大多数场景下,这种渲染机制并不会在视觉上或性能上造成太多负担。
     1 
                    
                    TWorldIsNButThis      2023-05-17 01:11:50 +08:00    react 大概是最不环保的前端框架 
                 | 
            
     2 
                    
                    AvilCore      2023-05-17 01:55:18 +08:00 via Android    做开发大忌过优化,没做性能分析不要 yy 速度快慢 
                 | 
            
     3 
                    
                    charlie21      2023-05-17 07:41:27 +08:00 via iPhone 
                    
                    不能克服 
                 | 
            
     4 
                    
                    beginor      2023-05-17 07:51:28 +08:00 via Android 
                    
                    其它前段框架也差不多吧,脏值监测都差不多的 
                 | 
            
     5 
                    
                    ChefIsAwesome      2023-05-17 08:11:28 +08:00    前几年我做手机网页,手机硬件不够强,网页性能都是抠出来的。 
                render 里放 event handler 是不可能的。传 props ,我都给分类成动态的和静态的,就为了 shouldComponentUpdate 的时候能少比较几个值。 好在 react 设计的好,这些东西一个 higher order component 都能搞定。  | 
            
     6 
                    
                    zloong      2023-05-17 09:06:43 +08:00    所以我选 vue 
                 | 
            
     7 
                    
                    theprimone      2023-05-17 09:18:23 +08:00    建议对 React 应用征收碳税 
                 | 
            
     8 
                    
                    lizhenda      2023-05-17 09:34:35 +08:00 
                    
                    要么不管,要么换框架 
                 | 
            
     9 
                    
                    xiaoxiaoming01      2023-05-17 09:44:56 +08:00    建议对每一个 react 开发者征收碳税😑 
                 | 
            
     10 
                    
                    serco      2023-05-17 09:57:11 +08:00 
                    
                    如果这么想的,是不是可以快进到抛弃所有高刷屏,反正绝大部分时间 2 帧之间什么都没变 
                 | 
            
     11 
                    
                    linkopeneyes      2023-05-17 10:13:41 +08:00    先用 preact 替换 react,然后更进一步直接 soildjs 这样就没焦虑了 
                 | 
            
     12 
                    
                    makelove      2023-05-17 10:14:36 +08:00 
                    
                    所以我用 solid-js 
                类 react api ,但不乱 render,非常低碳环保  | 
            
     13 
                    
                    shunia      2023-05-17 10:36:05 +08:00 
                    
                    换成 solidjs 解君忧。但是别用 solid-start 。 
                 | 
            
     14 
                    
                    xusanduo2019      2023-05-17 10:45:21 +08:00 
                    
                    react 用不好就是性能吞金兽 
                 | 
            
     15 
                    
                    lankunblue      2023-05-17 10:53:01 +08:00 
                    
                    @shunia solid-start 有什么问题吗 
                 | 
            
     16 
                    
                    huijiewei      2023-05-17 11:03:42 +08:00 
                    
                    @lankunblue solid-js 的 SSR 很复杂,问题很多,最典型的就是 MDX 的问题。因为这个已弃 
                 | 
            
     17 
                    
                    githmb      2023-05-17 11:18:51 +08:00 
                    
                    亲,这边建议使用 useCallback 哦 
                 | 
            
     18 
                    
                    yimity      2023-05-17 12:04:49 +08:00 
                    
                    页面一打开一个函数执行 100 多遍。 
                 | 
            
     19 
                    
                    calicastle      2023-05-17 12:06:40 +08:00    You don't. That's the beauty of it 
                 | 
            
     20 
                    
                    auroraccc      2023-05-17 12:12:17 +08:00 
                    
                    用 solidjs ,react 依赖数组真的厌倦了 
                 | 
            
     21 
                    
                    ivslyyy      2023-05-17 12:35:57 +08:00 
                    
                    减少重复渲染,用 useCallback 
                ref 在 react 里直接操作 DOM ,不用 state 那一套  | 
            
     22 
                    
                    bgm004      2023-05-17 12:52:26 +08:00 via Android 
                    
                    没有感到卡顿就不管。😂 
                 | 
            
     23 
                    
                    q307990588      2023-05-17 16:12:33 +08:00 
                    
                    @ivslyyy 还真是个啥都不懂的前端啊 
                 | 
            
     24 
                    
                    ivslyyy      2023-05-17 16:20:43 +08:00 
                    
                    @q307990588 被发现了,我真的是一个网页代码初学者。 
                 | 
            
     25 
                    
                    jswh      2023-05-17 16:36:12 +08:00 
                    
                    不用 react 
                转行后端 转行运维 转行炒饭 🤣  | 
            
     26 
                    
                    Leonard      2023-05-17 16:49:52 +08:00 
                    
                    别想太多,遇到性能瓶颈再考虑优化 
                 | 
            
     27 
                    
                    Imindzzz      2023-05-17 16:49:55 +08:00 via Android    想想游戏都是一秒几十次重绘,会不会好受点? 
                而且没有被立马抛弃呀,不是都有缓存? 提 vue solid 的,可能懂点前端,但是不多。 声明式 UI 都得这样。  | 
            
     28 
                    
                    n18255447846      2023-05-17 18:10:58 +08:00 
                    
                    这种都要担忧的话,怎么不想想 class 语法开销呢,不如 Function.prototype ;又比如加减乘除,转化为二进制的开销,不如直接位操作符。 
                React 里只要合理地设置 SCU 和 areEqual ,就能杜绝大部分的重复渲染。  | 
            
     29 
                    
                    stroh      2023-05-17 18:35:56 +08:00    我以前一个同事去一个神奇的公司,他们公司要求用 react ,面试也是 react ,但他只会 jquery 和 js ,前端就他一个人,然后他就偷偷在 webpack 里加了个 copy 文件到 dist 的插件,项目还是用 jquery 写,然后每次打包的时候就自动到 dist 里,就这样项目做了 2 年,觉得没意思就跳槽了(不知道去哪个公司霍霍了),等新招的前端接手的时候,整个 react 项目里就是空壳,启动全部走 jquery 的 index ,他每次把项目考进去然后在 jenkins 打包构建,实际都是自己写的 jquery ,老板走之前还夸他项目性能多好多好,还加薪挽留...这件事后我就不对什么 react vue 感冒了,只要完成老板任务就可以 
                 | 
            
     30 
                    
                    stroh      2023-05-17 18:38:06 +08:00 
                    
                    新招的前端还纳闷,你们公司不是用 react 吗?问了所有研发都说是 react ,还说 react 效率多好多块...说要继承之前前端的遗志把项目按照现有流程好好做下去,那个新来的前端一脸懵逼 
                 | 
            
     31 
                    
                    beginor      2023-05-17 18:45:12 +08:00 via Android 
                    
                    
                 | 
            
     32 
                    
                    fernandoxu      2023-05-17 21:41:04 +08:00    Fix the slow render before you fix the re-render 
                https://kentcdodds.com/blog/fix-the-slow-render-before-you-fix-the-re-render  | 
            
     33 
                    
                    witcat      2023-05-17 21:42:33 +08:00 
                    
                    好多年前领导说过一句我觉得特别经典的话:没遇到瓶颈就不优化。 
                 | 
            
     34 
                    
                    darkengine      2023-05-17 21:51:47 +08:00 
                    
                    记住六个字:又不是不能用 
                 | 
            
     35 
                    
                    iPhone15   OP @Imindzzz 每次一定会有立马被抛弃的东西,各种 memo 的逻辑,就是判定是否有缓存,有则返回缓存+丢弃新传入的函数。 
                比如 useCallback(() => setCount(pre => pre + 1), []),虽然他返回的永远是首次缓存的函数,但新的函数还是会被创建然后丢弃。 第二次 render 的过程,也就是: 1 、创建函数:() => setCount(pre => pre + 1) 2 、传给 useMemo 3 、发现有缓存函数 4 、返回缓存函数 5 、丢弃刚刚创建的函数 另外 useMemo 是可以减少函数的“执行”,返回上次的”执行结果“,但是也无可避免的会创建新的函数,但被立马丢弃。 当然这都无伤大雅,只是日常总是觉得心里有疙瘩~😂  | 
            
     36 
                    
                    iPhone15   OP  | 
            
     37 
                    
                    Imindzzz      2023-05-18 01:21:51 +08:00 
                    
                    
                 | 
            
     38 
                    
                    fernandoxu      2023-05-18 06:42:34 +08:00    @iPhone15 即执行 useCallback 和 useMemo 也是成本,和简单的 re-render 都是执行函数,不一定有多少性能差别,re-render 又不一定会更新 dom 。所以无伤大雅的 re-render 没必要处理一下子,fix the slow render before you fix the re-render 
                 | 
            
     39 
                    
                    stroh      2023-05-18 09:11:44 +08:00 
                    
                    @beginor 听前同事说的,不像假的,而且这种情况在业内不少见,不过很早前 jquery 我也用了 3 年,那时候没 react 也用的好好的 
                 | 
            
     40 
                    
                    uaoin      2023-05-18 09:21:15 +08:00 
                    
                    我总是搞不清楚什么时候该使用 React.memo 包裹组件,总觉得每个组件都要包裹,然后又费劲做很多 memoized 的操作。 
                 | 
            
     41 
                    
                    uaoin      2023-05-18 09:23:16 +08:00 
                    
                    [昨天看到一篇讲 re-renders 的文章分享给大家]( https://www.developerway.com/posts/react-re-renders-guide) 
                 |