Material-ui 自动完成:向 startAdornment 添加一个值
Material-ui Autocomplete: Add a value to startAdornment
我有自动完成多选权限。
https://codesandbox.io/s/bold-jackson-dkjmb?file=/src/App.js
在示例中,我有 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>
)
}}
/>
);
}}
我希望能够在呈现文本字段之前向 params.InputProps.startAdornment 添加一个值。
由于每个选定的对象似乎都是非常复杂的对象,我该如何手动执行此操作(push() 太复杂了)?关于如何添加对象的任何想法:
手动?
在从 dropdown/checkbox 中选择一个值之前,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>
)
}}
/>
);
}}
我有自动完成多选权限。
https://codesandbox.io/s/bold-jackson-dkjmb?file=/src/App.js
在示例中,我有 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>
)
}}
/>
);
}}
我希望能够在呈现文本字段之前向 params.InputProps.startAdornment 添加一个值。
由于每个选定的对象似乎都是非常复杂的对象,我该如何手动执行此操作(push() 太复杂了)?关于如何添加对象的任何想法:
手动?
在从 dropdown/checkbox 中选择一个值之前,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>
)
}}
/>
);
}}