Как настроить фокус на компоненте material-ui TextField
?Как установить фокус на MaterialUI TextField?
componentDidMount() {
ReactDom.findDomNode(this.refs.myControl).focus()
}
Я попытался выше код, но он не работает :(
Как настроить фокус на компоненте material-ui TextField
?Как установить фокус на MaterialUI TextField?
componentDidMount() {
ReactDom.findDomNode(this.refs.myControl).focus()
}
Я попытался выше код, но он не работает :(
Вы можете использовать атрибут autoFocus
.
<TextField value="some value" autoFocus />
я наткнулся на эти вопросы ищут решения одной и той же задачи Я нашел около autoFocus
, но обнаружил, что он работает только при первой загрузке страницы, а не после отправки формы. Как я, наконец, нашел, что это можно сделать, добавив ref
ребенку TextField
и вызывающий select()
на форме представить:
<form onSubmit={this.onSubmit}>
<TextField ref="amountComp" ... />
</form>
и
onSubmit(event: any): void {
// save form
(this.refs["amountComp"] as TextField).select();
};
Это не работает в React. –
Что вы имеете в виду, это «не работает изначально в реактиве»? AFAIK 'ref' - это способ React для предоставления элемента подчеркивания DOM, чтобы вы могли делать такие вещи, как ... call plain javascript' domelement.select() 'для установки фокуса! Или, может быть, вы запутались во второй части кода, которая является машинописным текстом, а не javascript? –
autoFocus
также не работает для меня, может быть, так как это компонент, который не установлен, когда компонент нагрузки верхнего уровня. Я должен был сделать что-то гораздо более запутанный, чтобы заставить его работать:
const focusUsernameInputField = input => {
if (input) {
setTimeout(() => {input.focus()}, 100);
}
};
return (
<TextField
hintText="Username"
floatingLabelText="Username"
ref={focusUsernameInputField}
/>
);
Обратите внимание, что по какой-то причине он не работает без setTimeout
. Для получения дополнительной информации см. https://github.com/callemall/material-ui/issues/1594.
NB это автофокус –
Спасибо! Хороший улов. –
Работает, когда страница загружается, но не после отправки формы. –