React 19 发布了,你们用过 Suspense / Transition 吗 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
X_Del
V2EX    React

React 19 发布了,你们用过 Suspense / Transition 吗

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

    https://react.dev/blog/2024/12/05/react-19

    印象里 Suspense 和 Transition 这两个功能是 React 18 发布的。似乎 NextJS 之后,React 社区的焦点就变成了 SSR 和 RSC 。这两个功能一直没什么存在感,生态也很一般。

    甚至直到现在,官方也没有说明第三方库该如何支持 Suspense:

    The requirements for implementing a Suspense-enabled data source are unstable and undocumented. An official API for integrating data sources with Suspense will be released in a future version of React.

    说实话这两个功能发布之后,我是一次也没用过。想问问大家用过这个两个 API 吗?体验如何?在新项目中是否会用这些 API ?

    12 条回复    2024-12-06 19:23:55 +08:00
    bgm004
        1
    bgm004  
       310 天前
    要不是看到这个帖,我都不知道 react 19 已经发布,beta 有半年了吧。hooks 我都没有用过几个。感觉是给框架用的。
    codehz
        2
    codehz  
       310 天前
    其实 suspense 的核心就是在 render 阶段 throw 一个 promise ,只要保证 promise 的引用不变,就可以一直被 suspense 接住显示 fallback
    然后 transition 就是能在下次 render 的时候 throw 另一个 promise 的时候暂时不显示 fallback 的内容(当然也可以不配合 suspense 用,单独用的情况就是可以标记里面触发的更新不应该 blocking ui ,ui 的 rerender 可以在后台完成后再展示
    slert
        3
    slert  
       310 天前
    react 的新特性总感觉光看文档看不明白 有没有可能是往复杂的道路越走越远了
    zsj1029
        4
    zsj1029  
       310 天前
    越玩越花,2/8 定律,大抵是 8 成项目用不到的,不用研究
    maichael
        5
    maichael  
       310 天前
    @slert 你的感觉其实没错,从 18 开始新的特性基本都是面向 Next.js 之类的框架服务为主了。
    zhw2590582
        6
    zhw2590582  
       310 天前
    隔了几年没用 react, 现在完全不懂这些新概念
        7
    FlashEcho  
       310 天前
    用是没有用过,但是学的时候学过: https://nextjs.org/learn/dashboard-app/streaming

    所以说 Suspense 的存在感不可能低的,至少新学 nextjs 的人都会学一遍,至于用不用就不一定了
    NessajCN
        8
    NessajCN  
       310 天前 via Android
    这个特性就是原本手搓的
    const [isLoading, setIsLoading] = useState(false);

    const OnClick= async (e) => {
    setIsLoading(true);
    await some_action();
    setIsLoading(false);
    }

    给你个 hook 省得写起来嗦
    实用性还是有的
    但要说多大革新那就想多了
    原本就能轻松实现的功能
    iugo
        9
    iugo  
       310 天前
    用过 Suspense, 挺好的. 但也不是不可替代.

    目前 SSR 对我们意义不大, 即便使用 Next.js, 也是当作 CRA 的替代品.
    tcper
        10
    tcper  
       310 天前
    最近做一些 css 动画,css 动画弄一个一直在那播的比较容易,但是如果想搞一个根据状态变化,播一次,保持状态,倒回来这种就非常麻烦。

    react 要能解决这个问题比折腾这些 hook 强多了。
    Nyeshuai
        11
    Nyeshuai  
       310 天前 via Android
    Suspense 在根本的动态路由上就会碰到不算冷门把. Transition 项目太菜用不上. 19 的 普通 ref 和编译优化都是痛点更新,react 真没什么可挑的了,TS 指定省心框架。
    iugo
        12
    iugo  
       310 天前
    看了一下文档, 这是我们的经验总结: https://zsqk.github.io/news/2024-12-06-react-19.html
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     881 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 23ms UTC 19:17 PVG 03:17 LAX 12:17 JFK 15:17
    Do have faith in what you're doing.
    ubao 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