首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何更改Chakra UI Toast组件的背景色?

如何更改Chakra UI Toast组件的背景色?
EN

Stack Overflow用户
提问于 2021-10-11 19:19:01
回答 3查看 3K关注 0票数 2

我使用Chakra,我的应用程序中有几个Toast组件。默认情况下,它们有一个蓝色的背景色,因为它们有status="info"

如何用status="info"改变所有祝酒词的背景色?我想保留所有其他默认样式(宽度、位置等),只需要更改颜色。

EN

回答 3

Stack Overflow用户

发布于 2021-12-16 11:46:13

Toast组件在遮罩下使用Alert

Alert 配色方案的支柱.这个配色方案是在主题定义中使用来定义背景色。

默认情况下,status="info"映射到blue,并使用subtle变量。

因此,您需要在您的主题定义中添加这样的覆盖

代码语言:javascript
运行
复制
import { theme as origTheme, extendTheme } from "@chakra-ui/react"

const theme = extendTheme({
  components: {
    Alert: {
      variants: {
        subtle: (props) => { // only applies to `subtle` variant
          const { colorScheme: c } = props
          if (c !== "blue") {
            // use original definition for all color schemes except "blue"
            return origTheme.components.Alert.variants.subtle(props)
          }
          return {
            container: {
              bg: `${c}.500`, // or literal color, e.g. "#0984ff"
            },
          }
        }
      }
    }
  }
})

blue.500这样的颜色变量是从颜色定义中读取的。

票数 11
EN

Stack Overflow用户

发布于 2022-08-14 12:01:41

在较新版本的脉轮中,Toasts确实是在罩下使用警报,但他们已经从精妙转向使用Alert的实体变体。造型坚固的警报变体将为您的演讲会风格。

票数 1
EN

Stack Overflow用户

发布于 2022-10-07 14:04:12

您可以创建自己的土司组件包装器,如下所示

代码语言:javascript
运行
复制
import { Flex, Heading, Text } from '@chakra-ui/react';
import React from 'react';

const BaseAlert = (props) => {
  const { title, details, ...style } = props;

  return (
    <Flex
      flexDirection="column"
      alignItems="center"
      justifyContent="center"
      {...style}
      py={4}
      px={4}
      borderLeft="3px solid"
      borderRight="3px solid"
      borderColor={`${style.colorScheme}.700`}
      bgColor={`${style.colorScheme}.100`}
    >
      <Heading
        as="h4"
        fontSize="md"
        fontWeight="500"
        color={`${style.colorScheme}.800`}
      >
        {props.title}
      </Heading>
      {props.details ? (
        <Text color={`${style.colorScheme}.800`}>{props.details}</Text>
      ) : null}
    </Flex>
  );
};

export const ErrorAlert = (props) => {
  return <BaseAlert colorScheme="red" {...props} />;
};

然后像那样使用它

代码语言:javascript
运行
复制
 toast({
    render: () => (
       <ErrorAlert
          title="Impossible d\'ajouter un nouveau moyen de paiement"
          details="Veuillez ressayer ou nous contacter"
       />
     ),
 });
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69531448

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档