【发布时间】:2021-07-02 19:20:56
【问题描述】:
我在 div 组件中使用 Select:
<div className="custom-filter custom-filter-data">
<DateRangeIcon className="search-icon"/>
<FormControl variant='standard' ref={addrRef} className=
{classes.formControl}>
<Select
labelId="demo-simple-select-label"
id="demo-simple-select"
defaultValue=""
onFocus={(e) => {addrRef.current.focus()}}
displayEmpty
>
<MenuItem value="" disabled>
Seleziona data
</MenuItem>
<MenuItem value={10}>Ten</MenuItem>
<MenuItem value={20}>Twenty</MenuItem>
<MenuItem value={30}>Thirty</MenuItem>
</Select>
</FormControl>
//other components
</div>
css 容器
.custom-filter:focus-within{
color: #495057;
background-color: #fff;
border-color: #80bdff;
outline: 0;
box-shadow: 0 0 0 0.2rem rgb(0 123 255 / 25%);
}
我需要在单击选择输入时触发对选择的关注,以利用父容器的 :focus-within 样式。现在父 :focus-within 正在处理 onChange 事件(当我选择 MenuItem 时)。如您所见,我尝试过使用 useRef() 但不起作用...似乎当用户单击选择的输入时,它会阻止所有其他焦点...
https://codesandbox.io/s/react-material-ui-select-forked-8msbu?file=/src/index.js
【问题讨论】:
-
你能整理一个可运行的例子吗?
-
您能否进一步澄清您的问题。很难理解你想要什么。如果您想在用户单击
SelectInput时执行一些代码,请附加一个焦点侦听器,如下所示:Select onFocus={e => console.log('focus')} /> -
你能把你的代码放到 CodeSandbox 上吗?
-
您使用的是 MUI v1 吗?它现在不受支持,当我尝试将 ref 传递给组件时,您的 CodeSandbox 不会运行。
-
@July 您可以在 Material-UI 文档和许多使用 Material-UI v4 的 StackOverflow 问题中找到许多 CodeSandbox 示例。使用 v1 的 CodeSandbox 没有帮助,如果那不是您正在使用的。
标签: javascript reactjs material-ui