如何根据登录信息(即登录成功或注销后)动态更改 "app" 的 "title"?
How to dynamically change the "title" of "app", based on login info (i.e. after login succeeds or logout)?
我有这个代码,请看title
prop:
const App = () => (
<Admin
theme={theme}
customRoutes={customRoutes}
menu={Menu}
dataProvider={loopbackRestClient(window.apiUrl)}
authProvider={authClient()}
dashboard={Dashboard}
locale="en"
i18nProvider={i18nProvider}
title={`Dashboard - ${window.accountData ? window.accountData.accommodation.name : ''}`}
>
// more code here...
这会尝试在登录成功时更改呈现的 title
,因此我们从那里得到不同的 accommodation.name
值。
我原以为该组件可能 re-render 此事件,因为登录会影响 REDUX 状态,因此 window
变量(在登录后更改)应该呈现不同的标题。
没用。
我们如何以正确的方式(react-redux方式)做到这一点?
您应该将当前在 Redux 存储中的 window 对象上拥有的帐户数据保存在它自己的 Reducer 中。当您的登录操作被触发时,我会用新数据更新该帐户数据。
您可以制作自定义和连接的 Title
组件并将其作为 title
属性传递。
https://codesandbox.io/s/1072ry6rl7
请注意,我的自定义 Title
组件必须支持 className
属性。这是 material-ui
要求。
我有这个代码,请看title
prop:
const App = () => (
<Admin
theme={theme}
customRoutes={customRoutes}
menu={Menu}
dataProvider={loopbackRestClient(window.apiUrl)}
authProvider={authClient()}
dashboard={Dashboard}
locale="en"
i18nProvider={i18nProvider}
title={`Dashboard - ${window.accountData ? window.accountData.accommodation.name : ''}`}
>
// more code here...
这会尝试在登录成功时更改呈现的 title
,因此我们从那里得到不同的 accommodation.name
值。
我原以为该组件可能 re-render 此事件,因为登录会影响 REDUX 状态,因此 window
变量(在登录后更改)应该呈现不同的标题。
没用。
我们如何以正确的方式(react-redux方式)做到这一点?
您应该将当前在 Redux 存储中的 window 对象上拥有的帐户数据保存在它自己的 Reducer 中。当您的登录操作被触发时,我会用新数据更新该帐户数据。
您可以制作自定义和连接的 Title
组件并将其作为 title
属性传递。
https://codesandbox.io/s/1072ry6rl7
请注意,我的自定义 Title
组件必须支持 className
属性。这是 material-ui
要求。