You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Material UI Autocomplete设置clearOnBlur为false仍失焦清空如何解决

根本原因

clearOnBlur={false}的配置仅对两种输入内容生效:一是和你传入的options数组中某一项匹配的输入值,二是开启自由输入模式后的任意自定义输入值。如果没有开启自由输入,且当前输入内容不在options范围内,组件内置的非法值校验逻辑优先级更高,失焦时会自动清空不匹配的内容,不受clearOnBlur配置影响。

解决方案

根据你的业务需求二选一即可:

允许用户输入任意内容(不限制必须选择预设选项)

直接给Autocomplete组件添加freeSolo属性即可,开启后组件不会校验输入内容是否匹配预设选项,失焦时会自动保留所有输入内容,示例代码:

<Autocomplete
  freeSolo
  clearOnBlur={false}
  options={yourOptions}
  renderInput={(params) => <TextField {...params} label="选项" />}
/>

仅允许选择预设选项,但需要保留用户的检索关键词失焦不消失

通过inputValue和onInputChange受控管理输入框内容,绕过组件默认的非法值清空逻辑即可,示例代码:

import { useState } from 'react';
import Autocomplete from '@mui/material/Autocomplete';
import TextField from '@mui/material/TextField';

function YourComponent() {
  const [inputValue, setInputValue] = useState('');
  const [selectedValue, setSelectedValue] = useState(null);

  return (
    <Autocomplete
      value={selectedValue}
      onChange={(_, newValue) => setSelectedValue(newValue)}
      inputValue={inputValue}
      onInputChange={(_, newInputValue) => setInputValue(newInputValue)}
      clearOnBlur={false}
      options={yourOptions}
      renderInput={(params) => <TextField {...params} label="选项" />}
    />
  );
}

内容的提问来源于stack exchange,提问作者dsudo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 17:45:00