我已经在一个新的React-Admin项目中创建了许多Show视图。我希望使用Material UI的Grid组件来将它们排列成更高效、更有用的布局,而不是让这些字段形成一个单独的列。不幸的是,这会阻止React Admin的...ShowLayout组件正确地呈现其中的字段组件。
我希望能够做这样的事情:
<Show {...props}>
<SimpleShowLayout>
<Grid container>
<Grid item>
<TextField source="firstName" />
</Grid>
<Grid item>
<TextField source="lastName" />
</Grid>
</Grid>
</SimpleShowLayout>
</Show>
我还尝试过创建包装器组件,以确保将正确的道具传递给Field组件,但无济于事。如何在布局中更好地排列字段?我是否必须使用自定义样式来“手动”设置显示布局内容的样式?如果是这样的话,这似乎是一种遗憾,因为RA在渲染时大量使用MUI,而且它已经提供了一个框架来实现这一点。
发布于 2020-09-26 12:44:15
以防有人还在这个问题上纠结--根据SimpleShowLayout在幕后的工作方式,仅仅传递道具是不够的。
我正在开发一个react-admin
npm包,其中我实现了一个基本的递归GridShowLayout
。它允许您根据需要嵌套任意多个<Grid>
组件,如@Pedro Viera所示,react-admin fields
仍然会相应地接收到所需的props
。
还有一个BoxedShowLayout
,你可以在这里查看它:ra-compact-ui/GridShowLayout
示例:
<Show {...props}>
<GridShowLayout>
<Grid container>
<Grid >
<TextField source="firstName" />
</Grid >
<Grid >
<TextField source="lastName" />
</Grid >
</Grid >
</GridShowLayout>
</Show>
发布于 2019-04-18 18:01:42
我试着用网格设计我的应用程序,这简直是噩梦,我被建议使用flexboxes代替,优点是它的响应速度非常快。你可以这样做:
import { unstable_Box as Box } from '@material-ui/core/Box';
<Show {...props}>
<SimpleShowLayout>
<Box display="flex">
<Box>
<TextField source="firstName" />
</Box>
<Box>
<TextField source="lastName" />
</Box>
</Box>
</SimpleShowLayout>
</Show>
并使用material-ui
文档中的所需配置,如
<Box display="flex" flexWrap="wrap" justifyContent="center" alignItems="center">
https://stackoverflow.com/questions/55750821
复制相似问题