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

React Context创建遇TS2604错误:JSX元素无构造或调用签名求助

解决React Context的TS2604错误

问题原因

你直接将BookingContext当作JSX组件使用,但React Context本身并非可渲染的JSX元素,只有它的**Provider属性**才是用于包裹子组件的上下文提供者组件,这就是触发TS2604错误的根本原因。

修正方案

无需修改的代码部分

创建Context:

export const BookingContext = createContext<BookingContextType>({ initiateBooking() {}, });

类型定义:

export interface BookingContextType { initiateBooking: (flight: Departures) => void; }

initiateBooking函数定义:

const initiateBooking = (flight: Departures) => { setBooking(true); };

修正后的JSX代码

将原代码中的<BookingContext>替换为<BookingContext.Provider>:

<BookingContext.Provider value={{ initiateBooking }}>
  <div className="rounded-lg mt-1 overflow-y-auto h-96 found-flights ">
    {foundFlights?.map((foundFlight) => (
      <FoundFlight foundFlight={foundFlight} sortBy={sortBy} />
    ))}
  </div>
</BookingContext.Provider>

额外说明

React Context创建完成后,必须通过其.Provider组件注入上下文值,子组件才能通过useContext(BookingContext)钩子获取到上下文内容。直接使用Context本身会被TypeScript判定为不具备JSX元素的构造/调用签名,进而抛出错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 15:25:51