Как можно изменить стили для компонента message в Ant Design при использовании React?

  • 24 сентября 2024 г. 14:13
Ответы на вопрос 2
В Ant Design для изменения стилей компонента сообщения (`message`) вы можете воспользоваться несколькими способами. Вот несколько из них:

### 1. Использование `className` и CSS

Вы можете добавить класс к сообщениям и определить стили в вашем CSS:

```jsx
import { message } from 'antd';
import 'antd/dist/antd.css'; // убедитесь, что вы импортируете стили Ant Design

const App = () => {
  const showMessage = () => {
    message.info('Это сообщение!', {
      className: 'custom-message', // добавляем класс
    });
  };

  return (
    <div>
      <button onClick={showMessage}>Показать сообщение</button>
    </div>
  );
};

export default App;
```

В вашем CSS файле:

```css
.custom-message {
  background-color: #ffcc00; /* ваш цвет фона */
  color: #000; /* ваш цвет текста */
}
```

### 2. Использование `style` для inline-стилей

Вы также можете изменить стили непосредственно с помощью inline-стилей:

```jsx
const App = () => {
  const showMessage = () => {
    message.info('Это сообщение!', {
      style: {
        backgroundColor: '#ffcc00', // ваш цвет фона
        color: '#000', // ваш цвет текста
      },
    });
  };

  return (
    <div>
      <button onClick={showMessage}>Показать сообщение</button>
    </div>
  );
};

export default App;
```

### 3. Использование кастомного контейнера

Если вам нужно более детальное управление, вы можете создать собственный контейнер для сообщений:

```jsx
import { notification } from 'antd';

const App = () => {
  const openNotification = () => {
    notification.open({
      message: 'Это сообщение!',
      description: 'Описание вашего сообщения.',
      style: {
        backgroundColor: '#ffcc00',
        color: '#000',
      },
    });
  };

  return (
    <div>
      <button onClick={openNotification}>Показать уведомление</button>
    </div>
  );
};

export default App;
```

### 4. Создание своего компонента сообщения

Если нужно больше свободы в дизайне и содержании, вы можете создать свой собственный компонент сообщения и использовать его где необходимо:

```jsx
import React from 'react';
import { message } from 'antd';
import 'antd/dist/antd.css';

const CustomMessage = ({ text }) => {
  return (
    <div style={{ backgroundColor: '#ffcc00', color: '#000', padding: '16px' }}>
      {text}
    </div>
  );
};

const App = () => {
  const showMessage = () => {
    const content = <CustomMessage text="Это ваше собственное сообщение!" />;
    message.info(content);
  };

  return (
    <div>
      <button onClick={showMessage}>Показать кастомное сообщение</button>
    </div>
  );
};

export default App;
```

Выберите один из подходов в зависимости от ваших нужд и ситуации.
Судя по доке на внутренний контент props'a класса нет. 
Остаётся три варианта:
1. Изменение темы:
В v4 глобально, изменив less переменную: @message-notice-content-bg , в v5 через свойство contentBg :
https://ant.design/docs/react/migrate-less-variabl...

2. Тупо руками переписать вложенный класс: .custom-class .ant-message-notice-content { ... }

3. Передать кастомный компонент с нужными стилями в качестве content.
Похожие вопросы