首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MUI MUI自动完成-自定义renderInput内容

MUI MUI自动完成-自定义renderInput内容
EN

Stack Overflow用户
提问于 2022-05-09 13:08:09
回答 1查看 419关注 0票数 1

我正在使用React自动完成组件,如官方文档中的国家范例

我的目标是以粗体显示国家代码,就像我在renderOption中已经做的那样,简单地将option.code值用HTML标记括起来。

代码语言:javascript
复制
import * as React from 'react';
import Box from '@mui/material/Box';
import TextField from '@mui/material/TextField';
import Autocomplete from '@mui/material/Autocomplete';

export default function CountrySelect() {
  return (
    <Autocomplete
      id="country-select-demo"
      sx={{ width: 300 }}
      options={countries}
      autoHighlight
      getOptionLabel={(option) => `${option.code} ${option.label}`} // DISPLAY THE CODE
      renderOption={(props, option) => (
        <Box component="li" sx={{ '& > img': { mr: 2, flexShrink: 0 } }} {...props}>
          <img
            loading="lazy"
            width="20"
            src={`https://flagcdn.com/w20/${option.code.toLowerCase()}.png`}
            srcSet={`https://flagcdn.com/w40/${option.code.toLowerCase()}.png 2x`}
            alt=""
          />
          {option.label} (<b>{option.code}</b>) +{option.phone}
        </Box>
      )}
      renderInput={(params) => (
        <TextField
          {...params}
          label="Choose a country"
          inputProps={{
            ...params.inputProps,
            autoComplete: 'new-password', // disable autocomplete and autofill
          }}
        />
      )}
    />
  );
}

我无法找到在option.code属性中引用renderInput的方法,因此我无法找到如何在renderInput中以粗体显示国家代码,因为粗体只有在选择选项时才可见,而在选择该选项时则不能显示。

有什么解决办法吗?

EN

回答 1

Stack Overflow用户

发布于 2022-07-06 10:13:29

这方面的主要问题是MUI由HTML组成。

它的值只能是string类型,它禁止任何直接的值样式,但是您可以使用如下所示的startAdornment

代码语言:javascript
复制
...
      renderInput={(params) => (
        <TextField
          {...params}
          label="Choose a country"
          inputProps={{
            ...params.inputProps,
            autoComplete: "new-password" // disable autocomplete and autofill
          }}
          InputProps={{
            ...params.InputProps,
            startAdornment: <strong>{params.inputProps.value.split(" ")[0]}</strong>
          }}
        />
      )}
...

您的下一个挑战将是从输入值中删除附加的国家代码,甚至更好的是,移至受控值方法。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72172519

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档