You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用JSX定义内联组件?求等价于htm匿名组件的写法

对应的JSX实现方式

你用htm写的匿名组件逻辑,对应的JSX可以通过两种方式实现,都能满足你在测试中提取Hook值的需求:

方式1:直接渲染匿名函数组件

这种写法和你的htm实现逻辑最接近,将匿名函数作为组件标签使用,注意组件必须返回一个React节点(这里返回null即可,因为不需要渲染实际内容):

let loc;
render(
  <div>
    <(() => {
      loc = useLocation();
      return null;
    }) />
  </div>,
  scratch
);

方式2:在JSX表达式中调用匿名函数

另一种更常见的写法是在JSX的大括号表达式中直接调用匿名函数,同样要保证Hook在组件渲染的顶层调用:

let loc;
render(
  <div>
    {(() => {
      loc = useLocation();
      return null;
    })()}
  </div>,
  scratch
);

注意事项

React要求Hook必须在组件的顶层调用,所以不管用哪种方式,这个匿名函数都必须是组件渲染流程的一部分——要么作为被渲染的组件,要么在组件的渲染过程中被执行,不能放在普通的非组件函数里调用Hook。

内容的提问来源于stack exchange,提问作者Devildude4427

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 07:45:00