#javascript #css #reactjs #datagrid #material-ui
Вопрос:
Я хочу изменить размер шрифта всех чисел (10, 25 и 50, как показано на этом скриншоте ниже) внутри строк на странице выберите элемент внутри разбиения DataGrid
на страницы компонента.
Я проверил каждое число и получил .MuiMenuItem-root
в качестве селектора для каждого элемента.
Затем я изменил font-size
и color
(просто чтобы доказать, что .MuiMenuItem-root
это был правильный выбор), как показано на скриншоте ниже.
Результат оказался успешным. Когда я применил селектор в своем коде, font-size
он не работал (ничего не изменилось).
Вот мой код:
CustomDataGrid.js:
import { DataGridPro } from '@mui/x-data-grid-pro'
import { withStyles } from '@material-ui/core/styles'
const CustomDataGrid = withStyles((theme) => ({
root: {
// ROOT
height: '100%',
border: 'none',
...some code here
// PAGINATION
'amp; .MuiTablePagination-caption': {
fontSize: 12,
},
'amp; .MuiTablePagination-select': {
fontSize: 12,
},
'amp; .MuiMenuItem-root': {
fontSize: 12,
},
'amp; .MuiIconButton-root': {
padding: 8,
},
},
}))(DataGridPro)
export default CustomDataGrid
зависимости (в файле package.json):
"@material-ui/core": "^4.12.3",
"@material-ui/icons": "^4.11.2",
"@material-ui/lab": "^4.0.0-alpha.60",
"@material-ui/styles": "^4.11.4",
"@mui/x-data-grid": "^4.0.0",
"@mui/x-data-grid-pro": "^4.0.0",
Итак, как я могу изменить font-size
все числа внутри элемента select внутри разбиения на страницы компонента таблицы данных с помощью withStyles
?
Комментарии:
1. Я думаю, что причина, по которой это не работает, заключается в том, что в вашем списке меню используется портал . Это не
DataGrid
внутри дерева DOM, поэтомуfont-size
оно не может быть унаследовано
Ответ №1:
DataGrid
имеет Pagination
слот, позволяющий переопределить компонент разбиения на страницы и его реквизиты. Он использует TablePagination
закулисье, которое предоставляет SelectProps
возможность переопределить Select
компонент. Сам Select
по себе имеет MenuProps
функцию, которая позволяет переопределять реквизиты раскрывающегося списка. Итак, со всем этим, это то, что вам нужно сделать, чтобы выбрать правильный компонент:
<DataGrid
pagination
{...data}
componentsProps={{
pagination: {
SelectProps: {
MenuProps: {
sx: {
color: "red",
"amp; .MuiMenuItem-root": {
fontSize: 30
}
}
}
}
}
}}
/>
Комментарии:
1. таким образом, я не мог изменить размер шрифта чисел внутри элемента select в разбивке на страницы с помощью
withStyles
? использование ` ‘ со стилями« позволяет нам использовать один и тот же компонент несколько раз2. @JabalLogian вы можете использовать
withStyles
, у выставленных реквизитов также естьclassName
, так что вы можете изменить их, если хотите:MenuProps: { className: classes.menu }
. Посмотрите эту демонстрацию.3. хм, я пытался использовать ваш ответ в своем коде, но все равно не получилось. Я не знаю, почему оба ваших ответа в codesandbox сработали.
4. @JabalLogian это отлично работает с пакетами из вашего вопроса
5. извините за поздний ответ, я увидел, что в последней ссылке, которую вы мне дали, не было строк для компонента выбора страницы. Я добавил
pageSize
,onPageSizeChange
, иrowsPerPageOptions
в вашем последнем коде, но по-прежнему не отображается ни одной строки на странице, выберите компонент