Выберите конкретную цель в разбивке по страницам сетки данных

#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
            }
          }
        }
      }
    }
  }}
/>
 

Демо-версия Codesandbox

Комментарии:

1. таким образом, я не мог изменить размер шрифта чисел внутри элемента select в разбивке на страницы с помощью withStyles ? использование ` ‘ со стилями« позволяет нам использовать один и тот же компонент несколько раз

2. @JabalLogian вы можете использовать withStyles , у выставленных реквизитов также есть className , так что вы можете изменить их, если хотите: MenuProps: { className: classes.menu } . Посмотрите эту демонстрацию.

3. хм, я пытался использовать ваш ответ в своем коде, но все равно не получилось. Я не знаю, почему оба ваших ответа в codesandbox сработали.

4. @JabalLogian это отлично работает с пакетами из вашего вопроса

5. извините за поздний ответ, я увидел, что в последней ссылке, которую вы мне дали, не было строк для компонента выбора страницы. Я добавил pageSize , onPageSizeChange , и rowsPerPageOptions в вашем последнем коде, но по-прежнему не отображается ни одной строки на странице, выберите компонент