gpt4 book ai didi

javascript - Material ui Autocomplete 按回车键创建新芯片

转载 作者:行者123 更新时间:2023-12-04 14:40:16 24 4
gpt4 key购买 nike

我希望我可以使用 Material ui 的自动完成来做这样的事情:wertarbyte

也就是说,插入文本(字符串)时没有必须从中选择的元素列表。

因此 noOptions 消息不应该出现,每次在键盘上按下 enter 键时都会插入文本。

enter image description here

链接:codesandbox

代码:

import React from "react";
import Chip from "@material-ui/core/Chip";
import Autocomplete from "@material-ui/lab/Autocomplete";
import { makeStyles } from "@material-ui/core/styles";
import TextField from "@material-ui/core/TextField";

const useStyles = makeStyles(theme => ({
root: {
width: 500,
"& > * + *": {
marginTop: theme.spacing(3)
}
}
}));

export default function Tags() {
const classes = useStyles();

return (
<div className={classes.root}>
<Autocomplete
multiple
id="tags-outlined"
options={[]}
defaultValue={["foo", "bar"]}
//getOptionLabel={(option) => option}
//defaultValue={[top100Films[13]]}
//filterSelectedOptions
renderInput={params => (
<TextField
{...params}
variant="outlined"
label="filterSelectedOptions"
placeholder="Favorites"
/>
)}
/>
</div>
);
}

最佳答案

如果你有简单的元素(不是对象,只是字符串),并且你真的不需要处理状态(你的自动完成不受控制),你可以使用 freeSolo Autocomplete 的 Prop .

<Autocomplete
multiple
freeSolo
id="tags-outlined"
options={["foo", "bar"]}
defaultValue={["foo", "bar"]}
renderInput={params => (
<TextField
{...params}
variant="outlined"
label="filterSelectedOptions"
placeholder="Favorites"
/>
)}
/>
如果您的元素更复杂并且您确实需要控制元素:
  • 确保自动完成标签是受控的(你设法重视)。
  • 监听 TextField 上的按键事件。
  • 如果代码是Enter ( e.code === 'Enter' ) - 获取输入值并将其推送到您拥有的当前值列表中。
  • 确保您还处理 onChange处理元素的删除:

  • 这是代码:
    const [autoCompleteValue, setAutoCompleteValue] = useState(["foo", "bar"]);

    return (

    <Autocomplete
    multiple
    id="tags-outlined"
    options={[]}
    value={autoCompleteValue}
    onChange={(e, newval, reason) => {
    setAutoCompleteValue(newval);
    }}
    renderInput={params => (
    <TextField
    {...params}
    variant="outlined"
    label="filterSelectedOptions"
    placeholder="Favorites"
    onKeyDown={e => {
    if (e.code === 'enter' && e.target.value) {
    setAutoCompleteValue(autoCompleteValue.concat(e.target.value));
    }
    }}
    />
    )}
    />
    );
    检查两个选项的实时工作示例: https://codesandbox.io/s/mui-autocomplete-create-options-on-enter-gw1jc

    关于javascript - Material ui Autocomplete 按回车键创建新芯片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61348049/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com