设置 TextField InputProps 时,Material-UI 自动完成不起作用

IT技术 reactjs material-ui
2021-05-19 18:10:24

我正在使用Material-UI Autcomplete组件(免费单人版)并且一切正常,直到我尝试更改文本的颜色(在TextField.

我的代码如下所示:

const moreClasses = {
    label: { style: { color: 'blue' } },
    input: {
        style: {
            color: 'red',
            borderBottom: `1px solid green`
        }
    }
};
//...
<Autocomplete
    //... classic props as in the official Doc
    renderInput={params => <TextField 
        {...params} 
        label={'label'} 
        InputLabelProps={moreClasses.label}
        InputProps={moreClasses.input} />
/>

预期行为

当您开始输入时,您可以看到自动完成功能,并且您输入的文本应为红色。

实际行为

文本颜色为红色,但自动完成功能不再起作用。

我创建了这个实时运行示例来说明 3 个组件的问题:

  • 仅文本字段(有效)

  • 使用InputProps(作品)不改变颜色的自动完成

  • 使用更改颜色的自动完成InputProps(不起作用)

笔记

通过设置InputLabelProps自动完成继续工作并更改标签的颜色(在我分享的示例中为蓝色)!所以我无法弄清楚为什么它在设置时不起作用InputProps

关于这个问题的任何反馈?

1个回答

传递InputProps会导致问题,因为Autocomplete组件将 InputProps作为params传递到的一部分传递,TextField因此InputProps显式传递将完全替换InputPropsin params

您可以通过结合params.InputProps您的附加InputProps代码来解决此问题,例如在以下代码中:

InputProps={{ ...params.InputProps, ...moreClasses.input }}

Autocomplete通过 InputLabelProps,因此即使它没有以明显的方式中断,您也应该对以下内容执行相同的操作InputLabelProps

InputLabelProps={{ ...params.InputLabelProps, ...moreClasses.label }}

编辑cool-sara-5l79o

相关答案:在 Material-ui Autocomplete 组件上设置文本颜色、轮廓和内边距