2 回答

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超9個(gè)贊
您應(yīng)該保存對(duì)TextField組件的引用,并在單擊另一個(gè)元素時(shí)使用此引用來聚焦(一旦觸發(fā)了某個(gè)事件)。
let inputRef;
<Autocomplete
...
renderInput={params => (
<TextField
inputRef={input => {
inputRef = input;
}}
/>
)}
/>
<button
onClick={() => {
inputRef.focus();
}}
這是一個(gè)工作示例的鏈接: https ://codesandbox.io/s/young-shadow-8typb
您可以使用openOnFocus自動(dòng)完成的屬性來決定是只想專注于輸入還是希望自動(dòng)完成的下拉菜單打開。

TA貢獻(xiàn)1757條經(jīng)驗(yàn) 獲得超8個(gè)贊
根據(jù)材料 ui 先前版本 4 或當(dāng)前版本 5,您可以使用 autoFocus 道具簡單地聚焦自動(dòng)完成輸入元素,如果 autoFocus 設(shè)置為 true,則輸入元素將聚焦在自動(dòng)完成組件的每個(gè)首次安裝上。
const [query, setQuery] = useState('');
<Autocomplete
.....
renderInput={(params) => {
const { InputLabelProps, InputProps, ...rest } = params;
return <InputBase
{...params.InputProps}
{...rest}
name="query"
value={query}
onChange={handleSearch}
autoFocus
/>
}}
/>
// 這只是一個(gè)示例,您可以根據(jù)自己的意愿處理以下函數(shù)
function handleOnSearch({ currentTarget = {} }) {
const { value } = currentTarget;
setQuery(value);
}
如果您想在單擊按鈕后打開自動(dòng)完成輸入:-
//button to be clicked to open autocomplete input
const clickButton=()=>{
setOpen(true)
}
const handleClose =()=>{
setOpen(false)
}
<Dialogue
close={handleClose}
open={open}
>
<DialogActions>
<Autocomplete
.....
renderInput={(params) => {
const { InputLabelProps, InputProps, ...rest } = params;
return <InputBase
{...params.InputProps}
{...rest}
name="query"
value={query}
onChange={handleSearch}
autoFocus
/>
}}
/>
</DialogActions>
</Dialogue>
干杯!??!
添加回答
舉報(bào)