如何根据登录信息(即登录成功或注销后)动态更改 "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 要求。