6

我在 chakra_ui 中扩展了主题提供程序

import React from "react";
import ReactDOM from "react-dom";
import { ChakraProvider, extendTheme } from "@chakra-ui/react";

import App from "./App";

const theme = extendTheme({
  colors: {
    brand: {
      50: "#44337A",
      100: "#B794F4"
    }
  }
});

const rootElement = document.getElementById("root");
ReactDOM.render(
  <React.StrictMode>
    <ChakraProvider theme={theme}>
      <App />
    </ChakraProvider>
  </React.StrictMode>,
  rootElement
);

我使用了按钮组件,并将 colorScheme 属性设置为我的主题具有的值:

 <Button size="sm" colorScheme="brand.100">
    Click Me
  </Button>

它在 css 中生成了以下内容:background: brand.50.500;. 所以它不应用颜色,有什么问题吗?

我注意到一些东西,没有.number:例如 0.50 或 0.100... 品牌不起作用,但其他内置颜色起作用。

https://codesandbox.io/s/infallible-allen-1k0tx?file=/src/App.js:257-333

4

1 回答 1

9

colorScheme只接受颜色名称。在您的情况下,它将是colorScheme="brand".

如果我们检查 chakra生成实心按钮的方式colorScheme,我们可以注意到它调用${c}.500. 这意味着当您创建品牌配色方案时,您需要指定一种颜色,500而您在代码示例中缺少该颜色。

import React from "react";
import ReactDOM from "react-dom";
import { ChakraProvider, extendTheme } from "@chakra-ui/react";

import App from "./App";

const theme = extendTheme({
  colors: {
    brand: {
      50: "#44337A",
      100: "#B794F4",
      500: "#B794F4", // you need this
    }
  }
});

const rootElement = document.getElementById("root");
ReactDOM.render(
  <React.StrictMode>
    <ChakraProvider theme={theme}>
      <App />
    </ChakraProvider>
  </React.StrictMode>,
  rootElement
);

当您调用按钮时,您只需要:

<Button size="sm" colorScheme="brand">
  Click Me
</Button
于 2020-12-12T19:58:08.270 回答