Как можно изменить стили для компонента 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 класса нет. <br/> Остаётся три варианта: <br/> 1. Изменение темы: <br/> В v4 глобально, изменив less переменную: <code>@message-notice-content-bg</code> , в v5 через свойство <code>contentBg</code> : <br/> <a href="https://ant.design/docs/react/migrate-less-variables#message" rel="nofollow">https://ant.design/docs/react/migrate-less-variabl...</a> <br/> <br/> 2.  Тупо руками переписать вложенный класс: <code class="css">.custom-class .ant-message-notice-content {  ... }</code> <br/> <br/> 3. Передать кастомный компонент с нужными стилями в качестве content.
Похожие вопросы