【问题标题】:How to use useTheme hook from Material-UI?如何使用 Material-UI 中的 useTheme 钩子?
【发布时间】:2019-10-23 01:43:53
【问题描述】:

Material-UI网站上有一个useTheme hook的使用示例:https://material-ui.com/styles/advanced/#theming

这里的代码:

    import React from 'react';
    import { ThemeProvider, useTheme } from '@material-ui/styles';

    function DeepChild() {
      const theme = useTheme();

      return <span>{`spacing ${theme.spacing}`}</span>;
    }

    function UseTheme() {
      return (
        <ThemeProvider
          theme={{
            spacing: '8px',
          }}
        >
          <DeepChild />
        </ThemeProvider>
      );
    }

    export default UseTheme;

但它没有显示如何注入主题。当我尝试使用 className 注入一些属性时,它什么也没做。代码在这里:

import React from "react";
import { ThemeProvider, useTheme } from "@material-ui/styles";

function DeepChild() {
  const theme = useTheme();

  return <div className={theme}> eldfo elo </div>;
}

function App() {
  return (
    <ThemeProvider
      theme={{
        spacing: "40px",
        color: "yellow",
        fontSize: "30px"
      }}
    >
      <DeepChild />
    </ThemeProvider>
  );
}

export default App;

我的问题是如何正确注入?

【问题讨论】:

    标签: reactjs material-ui react-hooks


    【解决方案1】:

    像使用任何其他 React 钩子一样使用它:

    function App() {
      const theme = useTheme<Theme>()
      const space = theme.spacing(1)
      return <p>Space: {space}</p>
    }
    

    请注意,您得到的是完整的主题。如果您想获取任何类名,您应该使用theme.className,但您没有在主题示例中定义className 属性。

    你想做的大概是:

    import React from "react";
    import { ThemeProvider, useTheme } from "@material-ui/styles";
    
    function DeepChild() {
      const theme = useTheme();
    
      return <div className={theme.divClass}> eldfo elo </div>;
    }
    
    function App() {
      return (
        <ThemeProvider
          theme={{
            divClass: {
              spacing: "40px",
              color: "yellow",
              fontSize: "30px"
            }
          }}
        >
          <DeepChild />
        </ThemeProvider>
      );
    }
    
    export default App;
    

    【讨论】:

    猜你喜欢
    • 2021-12-05
    • 2020-02-16
    • 2019-09-02
    • 2021-06-08
    • 2022-01-24
    • 2021-09-10
    • 2019-11-21
    • 2021-11-12
    • 2021-08-04
    相关资源
    最近更新 更多