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

升级React 18后应用不渲染且控制台无报错求助

React 18升级后白屏无报错问题

我有一个在React 17中运行正常的应用,升级到React 18后无法正常工作,控制台没有任何报错信息,页面显示白屏。

以下是应用的index.js代码:

import React from "react";
// import ReactDOM from "react-dom/client";
import { createRoot } from "react-dom/client";
import { BrowserRouter, Switch, Route } from "react-router-dom";
import { CompatRouter, CompatRoute } from "react-router-dom-v5-compat";
import * as serviceWorker from "./serviceWorker";
import LogRocket from "logrocket";

// redux imports
import { ReactReduxFirebaseProvider } from "react-redux-firebase";
import { connect, Provider } from "react-redux";
import store, { rrfProps } from "./store";

// other HOCs
import FirestoreErrorHandler from "./HOC/FirestoreErrorHandler";

// components
import App from "./App";
import SignIn from "./components/auth/SignIn";

// config checks
import runAppValidators from "./config/checks";

// run initial app validate checks
runAppValidators();

// initialize error / session-logging app
LogRocket.init("c6asae/ramcis-development");

// wait until firebase auth is ready, then render to the dom
const mapStateToProps = (state) => ({
    authIsLoaded: state.firebase.auth && state.firebase.auth.isLoaded,
});
const WaitTillAuth = connect(mapStateToProps)(({ authIsLoaded }) => {
    // splash screen can go here in future :)
    if (!authIsLoaded) return null;
    return (
        <BrowserRouter>
            <CompatRouter>
                <Switch>
                    <CompatRoute
                        exact
                        // path={["/", "/signin"]}
                        path="/signin"
                        element={<SignIn />}
                    />
                    <FirestoreErrorHandler>
                        <CompatRoute path="*" element={<App />} />
                    </FirestoreErrorHandler>
                </Switch>
            </CompatRouter>
        </BrowserRouter>
    );
});


const container = document.getElementById("root");
const root = createRoot(container);

root.render(
    <Provider store={store}>
        <ReactReduxFirebaseProvider {...rrfProps}>
            <WaitTillAuth />
        </ReactReduxFirebaseProvider>
    </Provider>
);


serviceWorker.unregister();

我为React 18迁移所做的改动如下:

  • 导入方式变更:
import { createRoot } from "react-dom/client";
  • 渲染逻辑变更:
const container = document.getElementById("root");
const root = createRoot(container);

root.render(
    <Provider store={store}>
        <ReactReduxFirebaseProvider {...rrfProps}>
            <WaitTillAuth />
        </ReactReduxFirebaseProvider>
    </Provider>
);

我尝试过使用旧的渲染方式但无效,同时也已更新路由。当前页面显示为白屏,控制台无任何报错信息。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 15:09:14