【问题标题】:Add icon to the start of Material-UI's Autocomplete component在 Material-UI 的 Autocomplete 组件的开头添加图标
【发布时间】:2021-11-23 04:16:20
【问题描述】:

我想在Autocomplete 组件的开头添加一个图标。 (与startAdornment) 我读到Autocomplete 是一个普通的文本输入

到目前为止,我尝试添加

InputProps={{startAdornment: <InputAdornment position="start">kg</InputAdornment>,}}

&lt;TextField /&gt; 组件。如下:

<Autocomplete
            {...defaultProps}
            onChange={(event, value) => {
                handleOnChange(event, value);
            }}
            id="disable-close-on-select"
            sx={{ width: 300 }}
            renderInput={params => (
                <TextField
                    InputProps={{
                        startAdornment: <InputAdornment position="start">kg</InputAdornment>,
                    }}
                    {...params}
                    label="search"
                    variant="standard"
                />
            )}
        />

任何帮助都会很棒,因为我是 Material-UI 生态系统的初学者。

defaultProps 是这样定义的。

const defaultProps = {
    options: data,
    getOptionLabel: (option: DataType) => option?.id,
};

【问题讨论】:

    标签: reactjs typescript autocomplete material-ui react-props


    【解决方案1】:

    道具顺序很重要。您定义的InputProps 被来自renderInputparams.InputProps 覆盖。这个:

    <TextField InputProps={yourProps} {...params}
    

    等同于:

    <TextField InputProps={yourProps} InputProps={param.InputProps} {...}
    

    最后的结果是:

    <TextField InputProps={param.InputProps} {...}
    

    您需要在传播params 后定义您的自定义InputProps,并确保也传播到嵌套道具中:

    renderInput={(params) => {
      return (
        <TextField
          {...params}
          InputProps={{
            ...params.InputProps,
            startAdornment: (
              <InputAdornment position="start">kg</InputAdornment>
            )
          }}
          label="Movie"
        />
      );
    

    【讨论】:

    • @muratdereköylü 因为我的回答,它不起作用吗?
    • 不,它确实有效。我没有先把你分享的所有部分都拿走。非常感谢:)
    • 参数来自哪里,当我控制台日志参数时,我看到有 2 个输入道具。一个是inputProps,另一个是InputProps。哪里有 2 个,它们是干什么用的?
    • @muratdereköylü paramsAutocomplete 组件提供,用于设置TextField,这样当您与之交互时,自动建议菜单会打开供您选择。 inputProps 用于传递给原生的input 元素,InputProps 用于传递给TextField 内部的Input 组件,这是对input 的封装,具有MUI 风格。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-04
    • 2021-05-15
    • 2020-10-16
    • 2022-11-11
    • 1970-01-01
    • 1970-01-01
    • 2020-03-31
    相关资源
    最近更新 更多