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

React Context Provider + TypeScript报错:TransporterContext命名空间未找到

React Context 命名空间错误排查与解决

我正在编写一个用于在localStorage中存储ID的React Context,代码如下:

import React, {
  createContext,
  useEffect,
  useMemo,
  useState,
  ReactNode,
} from 'react';

// Interface pour le contexte Transporter
interface TransporterContextProps {
  transporter: string | null;
  setTransporter: React.Dispatch<React.SetStateAction<string | null>>;
}

// Création du contexte avec le type `TransporterContextProps | undefined`
export const TransporterContext = createContext<
  TransporterContextProps | undefined
>(undefined);

interface TransporterProviderProps {
  children: ReactNode;
}

const TransporterProvider: React.FC<TransporterProviderProps> = ({
  children,
}) => {
  const [transporter, setTransporter] = useState<string | null>(
    localStorage.getItem('transporter'),
  );

  useEffect(() => {
    // Met à jour ou supprime le transporteur dans le localStorage
    if (transporter) {
      localStorage.setItem('transporter', transporter);
    } else {
      localStorage.removeItem('transporter');
    }
  }, [transporter]);

  // Définir `contextValue` avec le type explicite `TransporterContextProps`
  const contextValue: TransporterContextProps = useMemo(
    () => ({
      transporter,
      setTransporter,
    }),
    [transporter],
  );

  return (
    <TransporterContext.Provider value={contextValue}>
      {children}
    </TransporterContext.Provider>
  );
};

export default TransporterProvider;

但遇到了TypeScript错误:The namespace 'TransporterContext' could not be found.ts(2503),错误出现在以下代码行:

<TransporterContext.Provider value={contextValue}>
  {children}
</TransporterContext.Provider>

由于这个错误,我无法在App.tsx中导入该Provider,恳请帮忙解决。


解决办法

1. 调整Context初始值定义

原代码中Context的初始值为undefined,联合类型可能导致TypeScript无法正确识别Provider属性。可以改为提供合法的初始值:

// 替换原Context创建代码
export const TransporterContext = createContext<TransporterContextProps>({
  transporter: null,
  setTransporter: () => {}, // 提供空函数作为初始setter
});

2. 升级依赖版本

确保你的TypeScript版本(建议4.7+)和@types/react版本保持兼容,旧版本可能存在Context类型推断的Bug。执行以下命令更新:

npm install typescript@latest @types/react@latest

3. 清除TypeScript缓存并重启IDE

缓存可能导致类型识别异常,运行命令清除缓存:

npx tsc --clearCache

然后重启VS Code或其他IDE,重新加载项目。

4. 检查导入路径

在App.tsx中确认Provider的导入路径正确,避免大小写错误或路径错误:

import TransporterProvider from './TransporterProvider'; // 替换为实际文件路径

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 14:52:35