向 Material-ui (raect) 添加粗体 (boolean)

问题描述

我有一个来自 Material-UI (MUI) 的 Typography 组件,我需要添加一个粗体选项(类型 - 布尔值)。

我的排版组件

import React,{ FC } from 'react';
import Typo from '@material-ui/core/Typography';

interface IText {
  [property: string]: FC;
}

// for styles of each variant - see 'theme.ts'
const Typography: IText = {
  Title1: ({ children }) => (
    <Typo variant="subtitle1" component="h2">
      {children}
    </Typo>
  ),Title2: ({ children }) => (
    <Typo variant="subtitle2" component="h3">
      {children}
    </Typo>
  ),//....More like this below......
};
export default Typography;

我像这样使用它(在我的其他组件中): <Typography.Title1>/*...some code here...*/</Typography.Title1>,我想像这样添加粗体: <Typography.Title1 bold>/*...some code here...*/</Typography.Title1> 并且文本会加粗。

我已经尝试通过这个来添加一个界面,但我在使用排版的每个组件中都出现错误...

interface IText {
  [property: string]: FC;
}
interface IBold {
  bold?: boolean;
}

type IProps = IText | IBold;

const style = { fontWeight: 'bold' };

// for styles of each variant - see 'theme.ts'
const Typography: IProps = {
  Title1: ({ children },bold) => (
    <Typo style={bold && style} variant="subtitle1" component="h2">
      {children}
    </Typo>
  ),

错误

“IProps”类型上不存在属性“Title1”。 类型“IBold”.ts(2339)

上不存在属性“Title1”

希望我写得好... 谢谢!

解决方法

我解决了。 我将 IText 接口添加到 IBold 接口。

像这样:

interface IText {
  [property: string]: FC<IBold>;
}
//....
const Typography: IText = {
  Title1: ({ children },bold) => (
    <Typo style={bold && style} variant="subtitle1" component="h2">
      {children}
    </Typo>
  ),//....

然后,从使用的组件:

<Typography.Title1 bold={true}>
        //Some code
 </Typography.Title1>,//...

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...