Условный стиль с использованием `sx` в React-Admin

Поскольку makeStyles устарел: https://mui.com/system/styles/basics/. Я пытаюсь реализовать новый подход с помощью sx prop.

У меня возникли проблемы с пониманием того, как использовать его с компонентами React-Admin.

Допустим, у меня есть список журналов, который может быть Error, Warning или Info в поле type, и я хочу раскрасить его соответствующим образом.

Я пробовал что-то вроде этого:

const LogList = ({ permissions, ...props }) => {
  return (
    <List
      {...props}
      title = "Logs"
      filters = {<LogFilter />}
      perPage = {25}
      bulkActionButtons = {false}
    >
      <Datagrid rowClick = "show">
        <TextField
          source = "type"
          label = "Type"
          sx = { record.type === "Error" ? {color: "red"} : {color: "blue"}}
        />
        <TextField
          source = "description"
          label = "Description"
        />
        <DateField
          source = "createdAt"
          label = "Created At"
        />
      </Datagrid>
    </List>
  );
};

Но record нельзя использовать в sx.

Любые идеи, как заставить его работать?

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
0
0
53
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

sx = {{color:record.type === "Error" ? "red":"blue"}}

Попробуй это

К сожалению, это не работает. Выдает ошибку: record is not defined.

vladsiv 02.05.2023 10:14
Ответ принят как подходящий

Вам нужно получить доступ к записи, например, с помощью хука useRecordContext():

import { useRecordContext, TextField } from 'react-admin'
...
const TypeField = () => {
  const record = useRecordContext()

  return (
    <TextField
      source = "type"
      label = "Type"
      sx = {{ color: record?.type === "Error" ? "red" : "blue" }}
    />
  )    
}

Другие вопросы по теме