Когда я изменяю ширину и высоту изображения с помощью стилей, изменяется только ширина столбца. На размер изображения не влияет.
Есть идеи?
Без стилей
Со стилями
Репро Песочница кода (https://codesandbox.io/embed/54r440jp8k)
import React from "react";
import { Datagrid, ImageField, List, TextField } from "react-admin"; // eslint-disable-line import/no-unresolved
import { withStyles } from "material-ui/styles";
const styles = {
image: {
width: "20px",
height: "20px"
}
};
export const PostList = withStyles(styles)(({ classes, ...props }) => (
<List {...props}>
<Datagrid>
<ImageField source = "image.url" className = {classes.image} />
<TextField source = "id" />
<TextField source = "title" />
</Datagrid>
</List>
));
С использованием
Вам может понадобиться специальный компонент, чтобы сделать что-то подобное. Как насчет такого:
ListAvatar.js
import React from 'react';
import Avatar from '@material-ui/core/Avatar';
const ListAvatar = ({ record, size }) => (
<Avatar
src = {`${record.url.image}?size=${size}x${size}`}
size = {size}
style = {{
width: size,
height: size
}}
/>
);
ListAvatar.defaultProps = {
size: 30,
};
export default ListAvatar;
PostList.js
import React from "react";
import { Datagrid, List, TextField } from "react-admin"; // eslint-disable-line import/no-unresolved
import ListAvatar from './ListAvatar.js'
import { withStyles } from "material-ui/styles";
export const PostList = ({ classes, ...props }) => (
<List {...props}>
<Datagrid>
<ListAvatar />
<TextField source = "id" />
<TextField source = "title" />
</Datagrid>
</List>
);
Опираясь на пост Шона К. (спасибо за направление!)...
Я считаю, что это полный компонент (я протестировал переопределение классов из компонента <List />
, и он работает. Это также соответствует документам react-admin
и material-ui
(и стандартам). Однако я все еще новичок в этом, поэтому, пожалуйста, ответьте с любыми исправлениями и я обновлю это.
import React from "react";
import PropTypes from "prop-types";
import { withStyles } from "@material-ui/core/styles";
import classNames from "classnames";
import Avatar from "@material-ui/core/Avatar";
const styles = {
img: {
width: 36,
height: 36
},
root: {}
};
const ListAvatar = ({ className, record, source, classes }) => {
return (
<Avatar
src = {record[source]}
className = {classNames(classes.root, classes.img, className)}
/>
);
};
ListAvatar.propTypes = {
label: PropTypes.string,
record: PropTypes.object,
source: PropTypes.string.isRequired,
classes: PropTypes.object.isRequired,
className: PropTypes.string
};
export default withStyles(styles)(ListAvatar);
интересно, это действительно работает, чем принятый ответ