在默认状态下,我可以将星号的 colored颜色 更改为createTheme.

export const theme = createTheme({
  MuiFormLabel: {
    styleOverrides: {
      asterisk: {
        color: '#E54D39',
      },
    },
  },
});

文本字段-默认变量

TextField default variant

但是星号 colored颜色 应该像标签一样是蓝色的,而不是在文本字段被聚焦或填充时是红色的.但我不知道如何在createTheme中进行定制,因为Mui-focusedMuiFormLabel-asterisk不在同一个元素中.

专注于Textfield的变体

TextField focused variant

TextField focused in dev tools

MuiFormLabel: {
  styleOverrides: {
    // This is not working
    // root: {
    //  '&.MuiFormLabel-focused': {
    //    asterisk: {
    //      color: '#E54D39',
    //    },
    //  },
    // },
    asterisk: {
      color: '#E54D39',
    },
  },
},

推荐答案

从MUI文档100:

您可以在组件的每个槽中将回调作为值传递 styleOverrides以应用基于props 的样式.

ownerStateprops 是你通过的公共props 的组合 组件+组件的内部状态.

作为MuiFormLabelownersState的一部分,你可以得到focusedfilled个州,这将给你你想要的东西.例如:

const theme = createTheme({
  components: {
    MuiFormLabel: {
      styleOverrides: {
        asterisk: ({ ownerState }) => ({
          color: ownerState.focused || ownerState.filled ? "inherit" : "#E54D39"
        })
      }
    }
  }
});

这将产生:

example fields

工作代码Sandbox :https://codesandbox.io/s/textfield-asterisk-with-ownerstate-js-7wghtl?file=/src/Demo.js:186-428

Reactjs相关问答推荐

更改购物车中的产品数量后,PayPal Reaction/Next JS按钮未更新

在React Create App TS项目中安装material UI

Mantine DatePickerInput呈现错误

折叠并重新打开react 手风琴将重置内部状态

如何在不同的路由中渲染相同的页面组件(包括 getServerSideProps)

React Context API 在 Next.js 中更改路由时获取默认数据

无法使用 MongoDB Atlas 和 Next.js 删除正确的帖子

在react的useEffect钩子中,我的函数被调用,但只有第一个函数能够改变状态,第二个函数无法改变状态.

使用D3.js绘制和展示弦图的右下方象限

try 从 React JS 构建此教程游戏但无法继续前进

onChange in useEffect 的最佳实践

React 测试库 - 如何断言异步函数之间的中间状态?

一周前刚开始学习React,一直在调试为什么输入框在每次输入后都没有焦点

如何在 React 中使用 debounce hooks

如何在 React Native 中更新跨屏幕呈现的上下文状态变量?

使用 React Router v6 监听来自不同组件的组件状态变化

当从数组中删除数据时,UseEffect 不会重新渲染,仅在添加数据时才会重新渲染

如何解决在 react.js 中找不到模块错误

找不到元素 - 这是参考问题吗?

a.active 类在导入 x.scss 文件时有效,但在使用 x.module.scss 时无效