Поэтому я работаю с пользователями с определенными ролями и разрешениями. У двух из этих ролей есть собственная панель управления, а у остальных - нет. Итак, в основном я делаю что-то вроде этого на своем App.js
:
const AdminProps = {
title: <Header />,
theme: getMuiTheme(SnapbackTheme),
locale: 'en',
restClient,
authClient: AuthClient,
loginPage: LoginPage
}
let AppLayout = <Admin {...AdminProps } />
if (userRoleIs(USER_ROLE_1)) {
AppLayout = (
<Admin {...AdminProps } dashboard={CustomDashboardForThisRole}>
<Resource name="resource1" list={resource1List} />
</Admin>
)
}
if (userRoleIs(USER_ROLE_2)) {
AppLayout = (
<Admin {...AdminProps }>
<Resource name="resource1" list={resource1List} />
</Admin>
)
}
return AppLayout
Как видите, в зависимости от пользователя, который вошел в систему, я могу выбрать, какие реквизиты должны быть у Admin
. Это вроде как работает, проблема в том, что когда вы входите в систему с пользователем и выясняете, какая роль имеет, у меня нет правильного способа обновить Admin
реквизиты и повторно отрендерить их.
Это вызывает пустой экран содержимого при входе в систему с пользователями, у которых есть настраиваемая панель инструментов, до тех пор, пока я не обновлю страницу и администратор не отобразит правильно с правильной панелью мониторинга для пользователя.
Мое уродливое решение на данный момент: window.location.reload()
, когда вход в систему прошел успешно, но на секунду вы видите пустой экран содержимого, и это выглядит ужасно.
Мой вопрос: есть ли правильный способ повторно отрисовать компонент Admin
из authClient?
Заранее спасибо! ????????