升级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
相关产品推荐
相关产品推荐

