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

React Vite项目集成React Toastify遇useSyncExternalStore报错求助

解决React 18 + Vite集成react-toastify时的useSyncExternalStore错误

问题根源分析

从你提供的package.json能定位到核心问题:

  • React版本为18.2.0,但ReactDOM版本是17.0.2,版本不匹配导致React 18新增的useSyncExternalStore API无法被正确识别
  • @types/react-toastify版本为4.1.0,和当前使用的react-toastify 10.0.4版本严重不兼容
  • main.tsx仍在使用React 17的ReactDOM.render写法,不符合React 18的渲染规范

分步解决方案

1. 统一React和ReactDOM版本

执行命令将react-dom升级至18.2.0:

npm install react-dom@18.2.0
# 或使用yarn
yarn add react-dom@18.2.0

2. 更新react-toastify的类型定义

安装适配v10版本的类型包:

npm install @types/react-toastify@^10.0.0 --save-dev
# 或使用yarn
yarn add @types/react-toastify@^10.0.0 --dev

3. 改用React 18的createRoot渲染方式

修改main.tsx代码:

import React from 'react';
import { createRoot } from 'react-dom/client';
import App from './App';
import ErrorBoundary from '../src/ErrorBoundary';
import './index.css';
import { ToastContainer } from "react-toastify";
import 'react-toastify/dist/ReactToastify.css';

const rootElement = document.getElementById('root');
const root = createRoot(rootElement!);

root.render(
  <React.StrictMode>
    <ErrorBoundary>
      <App />
      <ToastContainer />
    </ErrorBoundary>
  </React.StrictMode>
);

4. 移除重复的CSS引入

在注册处理方法的文件中,删除重复的import 'react-toastify/dist/ReactToastify.css';,仅在main.tsx中保留一次即可。

5. 清理依赖并重新安装(可选)

若上述步骤后仍有问题,可清理依赖缓存后重新安装:

rm -rf node_modules package-lock.json
npm install

完成以上操作后,重启开发服务器,useSyncExternalStore相关错误即可解决,react-toastify能正常运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 06:32:55