默认情况下,MaterialUI的Select组件在选择选项后仍然保持焦点。在他们的文档中的所有示例中都可以看到这种行为。
我希望在选择了选项后,该元素会失去焦点。以下是我的代码:
const App = () => {
const [selectedValue, setSelectedValue] = useState('')
const selectElement = useRef(null);
return (
<Select
native
ref={selectElement}
value={selectedValue}
onChange={(evt) => {
setSelectedValue(evt.target.value)
// Attempt at blurring the element upon selection using the useRef:
selectElement.current.blur(); // Nothing happens
// Attempt at blurring the element upon selection using activeElement:
document.activeElement.blur(); // Get Error: "Property 'blur' does not exist on type 'Element'."
}}
>
<option value='option 1'>Option 1</option>
<option value='option 2'>Option 2</option>
<option value='option 3'>Option 3</option>
</Select>
);
};
如您所见,我尝试使用两种不同的方法来实现这一目标:
通过
useRef()
:此方法无效,没有任何错误出现,但是不能使我的元素模糊。通过
document.activeElement
:这会导致错误,显然元素上不存在属性blur
。
正确的方法是什么,在选择选项后将我的 Select 组件设置为模糊状态?
selectElement.blur();
或者evt.target.blur();
。 - 2phaselect
,这就是为什么该解决方案无效的原因。 - ericgio