反应材料 ui 自动完成元素焦点 onclick

我有一个 material-ui 自动完成元素


<Autocomplete

  id="combo-box-demo"

  autoHighlight

  openOnFocus

  autoComplete

  options={this.state.products}

  getOptionLabel={option => option.productName}

  style={{ width: 300 }}

  onChange={this.selectProduct}

  renderInput={params => (

    <TextField {...params} label="Select Product Name" variant="outlined" />

  )}

/>;

我希望这个元素在我单击按钮时获得焦点。


我尝试使用此处描述的引用如何以编程方式对焦点输入做出反应


它适用于其他元素,但不适用于自动完成


蝴蝶刀刀
浏览 130回答 2
2回答

PIPIONE

您应该保存对TextField组件的引用,并在单击另一个元素时使用此引用来聚焦(一旦触发了某个事件)。let inputRef;<Autocomplete&nbsp; ...&nbsp; renderInput={params => (&nbsp; &nbsp; <TextField&nbsp; &nbsp; &nbsp; inputRef={input => {&nbsp; &nbsp; &nbsp; &nbsp; inputRef = input;&nbsp; &nbsp; &nbsp; }}&nbsp; &nbsp; />&nbsp; )}/><button&nbsp; onClick={() => {&nbsp; &nbsp; inputRef.focus();&nbsp; }}这是一个工作示例的链接: https ://codesandbox.io/s/young-shadow-8typb您可以使用openOnFocus自动完成的属性来决定是只想专注于输入还是希望自动完成的下拉菜单打开。

陪伴而非守候

根据材料 ui 先前版本 4 或当前版本 5,您可以使用 autoFocus 道具简单地聚焦自动完成输入元素,如果 autoFocus 设置为 true,则输入元素将聚焦在自动完成组件的每个首次安装上。const [query, setQuery] = useState('');<Autocomplete.....&nbsp;renderInput={(params) => {&nbsp; const { InputLabelProps, InputProps, ...rest } = params;&nbsp; return <InputBase&nbsp; &nbsp; {...params.InputProps}&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {...rest}&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;name="query"&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; value={query}&nbsp;&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; onChange={handleSearch}&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; autoFocus&nbsp; &nbsp;/>}}/>// 这只是一个示例,您可以根据自己的意愿处理以下函数function handleOnSearch({ currentTarget = {} }) {&nbsp; &nbsp; const { value } = currentTarget;&nbsp; &nbsp; setQuery(value);&nbsp; }如果您想在单击按钮后打开自动完成输入:-//button to be clicked to open autocomplete inputconst clickButton=()=>{setOpen(true)}const handleClose =()=>{setOpen(false)}<Dialogueclose={handleClose}open={open}><DialogActions>&nbsp;<Autocomplete&nbsp; &nbsp; .....&nbsp; &nbsp; &nbsp;renderInput={(params) => {&nbsp; &nbsp; &nbsp; const { InputLabelProps, InputProps, ...rest } = params;&nbsp; &nbsp; &nbsp; return <InputBase&nbsp; &nbsp; &nbsp; &nbsp; {...params.InputProps}&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {...rest}&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;name="query"&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; value={query}&nbsp;&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; onChange={handleSearch}&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; autoFocus&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;/>&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; }}&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; /></DialogActions></Dialogue>干杯!!!
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript