我有私人路线。当用户未登录或电子邮件未验证时,重定向到带有警告的模式登录。它由函数 show modal 运行,但出现错误。 这是工作,通过它在开发中显示此错误。 在 prod 中,我没有收到此错误。
警告:
<块引用>index.js:1 警告:渲染时无法更新组件 (App
)
不同的组件 (Context.Consumer
)。找出坏处
setState() 在 Context.Consumer
内调用,按照堆栈跟踪作为
描述于
在路由中(在 PrivateRoute.js:13)
在 PrivateRoute ( 在 App.js:217)
在 Switch 中(在 App.js:196)
在路由器中(由 BrowserRouter 创建)
在 BrowserRouter 中(在 App.js:140)
在 div 中(在 App.js:139)
在应用程序中(在 src/index.js:11)
在提供者中(在 src/index.js:10)
代码:
<Route
{...rest}
render={(props) =>
(user && user.providerId && user.providerId !== 'password') ||
(user &&
user.providerId &&
user.providerId === 'password' &&
user.emailVerified) ? (
<Component {...props} />
) : (
<Redirect to="/">{setLoginModalShow(true)}</Redirect>
)
}
/>
我应该如何做这个正确的 请帮忙
答案 0 :(得分:0)
不要在重定向时调用 setLoginModalShow(true),试试下面的方法,在重定向到主页时传递一些标志作为动作,并在主页上从路由器检查该标志并使用它来显示登录模式
<Redirect
to={{
pathname: "/",
state: { action: "showLogin" }
}}
/>