微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

您如何在 react-admin 中根据资源更改主颜色?

如何解决您如何在 react-admin 中根据资源更改主颜色?

我有各种资源组件位于 react-admin Admin 组件中。管理组件具有自定义布局。但是,每个资源屏幕都有不同的主色,以表示您所在的部分和内容类型。如何将原色的特定主题对象变量传递给每个资源,然后在我的自定义布局中使用?

  <Admin
authProvider={AuthProvider}
dashboard={Dashboard}
dataProvider={graphQLProvider}
history={history}
layout={Layout}
title="Home"
  <Resource name="User" options={{label: 'Administrators'}} list={UserList} show={UserShow} edit={UserEdit}
            create={UserCreate} icon={UserIcon}/>

我应该使用“每个 react-admin 组件”上都可用的 className 道具还是有更好的方法

解决方法

React-admin 不支持此功能,但您可以使用自定义布局(请参阅 Replacing the appbar)和历史记录位置上的侦听器来实现它,以从 URL 获取资源。类似的东西:

import React,{ useEffect,useState } from 'react';
import { useHistory } from 'react-router-dom';
import { AppBar } from 'react-admin';
import { makeStyles } from '@material-ui/core/styles';

const useStyles = makeStyles({
   posts: {
       backgroundColor: 'red',},comments: {
       backgroundColor: 'blue',}
});

const MyAppBar = ({ children }) => {
   const [resource,setResource] = useState();
   const history = useHistory();
   const classes = useStyles();
   useEffect(() => {
      const newResource = extractResourceFromPathname(history.location.pathname); // left as an exercise to the reader
      if (newResource !== resource) {
          setResource(newResource);
      }
   },[history.location.pathname]);

   return <AppBar className={classes[resource]} {...props} />
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。