Material-ui 自动完成:为 startAdornment 添加值

Bor*_*nov 7 javascript autocomplete reactjs material-ui

我具有具有多项选择权限的自动完成功能。

https://codesandbox.io/s/bold-jackson-dkjmb?file=/src/App.js
Run Code Online (Sandbox Code Playgroud)

在示例中,我有 3 个城市选项。当选择某些内容时,如何在 TextField 中手动添加自动添加值?

换句话说:

 renderInput={(params) => {
        console.log(params);
        return (
          <TextField
            {...params}
            variant="outlined"
            label="Cities"
            placeholder="Enter cities"
            autoComplete="off"
            InputProps={{
              ...params.InputProps,
              endAdornment: (
                <React.Fragment>
                  {params.InputProps.endAdornment}
                </React.Fragment>
              )
            }}
          />
        );
  }}
Run Code Online (Sandbox Code Playgroud)

我希望能够在渲染文本字段之前向params.InputProps.startAdornment添加一个值。

在此输入图像描述

由于每个选定的对象似乎都是非常复杂的对象,我如何手动执行此操作(push() 太复杂了)?任何想法如何我可以添加这样的对象:

在此输入图像描述

手动?

dee*_*s27 10

startAdornment在从下拉列表/复选框中选择一个值之前,的值是未定义的。因此,您可以startAdornment向 InputProps 添加属性,如下所示,

import { Chip } from '@material-ui/core';
import { makeStyles } from "@material-ui/core/styles";

const useStyles = makeStyles((theme) => ({
  chip: {
    margin: theme.spacing(0.5, 0.25)
  }
}));

const classes = useStyles();

const handleDelete = (item) => () => {...};

 renderInput={(params) => {
    console.log(params);
    return (
      <TextField
        {...params}
        variant="outlined"
        label="Cities"
        placeholder="Enter cities"
        autoComplete="off"
        InputProps={{
          ...params.InputProps,
          startAdornment: (
            <Chip
              key={"manual"}
              tabIndex={-1}
              label={"manually added"}
              className={classes.chip}
              onDelete={handleDelete("blah")}
              deleteIcon // requires onDelete function to work
            />
          ),
          endAdornment: (
            <React.Fragment>
              {params.InputProps.endAdornment}
            </React.Fragment>
          )
        }}
      />
    );
  }}
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述