如何在用户点击输入时聚焦输入?
How to focus input when a user clicked on an input?
我尝试在 react.js 中创建一个搜索输入组件。在这个组件中,我想当用户点击搜索图标时,输入焦点及其宽度通过 css3 过渡属性增加。
这是我的代码块:
<input className={"news-search-v2"} type="text" />
<i className="material-icons"> search </i>
以及我的组件的手写笔代码
.news-search-v2
width 0px
transition: ease 0.5s all
&:focus
border-bottom solid 1px #5f6368
width 300px
声明输入的名称属性并将图标包装在标签元素中,并为其提供 "for" 属性,其值等于输入的名称:Reason
<input name="search" className={"news-search-v2"} type="text" />
<label for="search"><i className="material-icons"> search </i></label>
让这个在 React 中工作。使用 "htmlFor" 而不是 "for" :Reason
Arnav Yagnik
答案正确,但不是 React
解决方案。
如果您的组件是功能性的,您可以使用 useRef
挂钩。
import React from 'react';
const FocusExample = () => {
const textInput = React.useRef(null);
const setFocus = React.useCallback(() => { textInput.current.focus() });
return (
<>
<input ref={textInput} className={"news-search-v2"} type="text" />
<i className="material-icons" onClick={setFocus}> search </i>
</>
);
};
或者,如果您使用的是基于分类的视图,请使用 createRef
:
import React from 'react';
class FocusExample extends React.Component {
constructor(props) {
super(props);
this.textInput = React.createRef();
}
setFocus = () => {
this.textInput.current.focus();
}
render() {
return(
<>
<input ref={this.textInput} className={"news-search-v2"} type="text" />
<i className="material-icons" onClick={this.setFocus}> search </i>
</>
);
}
}
我尝试在 react.js 中创建一个搜索输入组件。在这个组件中,我想当用户点击搜索图标时,输入焦点及其宽度通过 css3 过渡属性增加。 这是我的代码块:
<input className={"news-search-v2"} type="text" />
<i className="material-icons"> search </i>
以及我的组件的手写笔代码
.news-search-v2
width 0px
transition: ease 0.5s all
&:focus
border-bottom solid 1px #5f6368
width 300px
声明输入的名称属性并将图标包装在标签元素中,并为其提供 "for" 属性,其值等于输入的名称:Reason
<input name="search" className={"news-search-v2"} type="text" />
<label for="search"><i className="material-icons"> search </i></label>
让这个在 React 中工作。使用 "htmlFor" 而不是 "for" :Reason
Arnav Yagnik
答案正确,但不是 React
解决方案。
如果您的组件是功能性的,您可以使用 useRef
挂钩。
import React from 'react';
const FocusExample = () => {
const textInput = React.useRef(null);
const setFocus = React.useCallback(() => { textInput.current.focus() });
return (
<>
<input ref={textInput} className={"news-search-v2"} type="text" />
<i className="material-icons" onClick={setFocus}> search </i>
</>
);
};
或者,如果您使用的是基于分类的视图,请使用 createRef
:
import React from 'react';
class FocusExample extends React.Component {
constructor(props) {
super(props);
this.textInput = React.createRef();
}
setFocus = () => {
this.textInput.current.focus();
}
render() {
return(
<>
<input ref={this.textInput} className={"news-search-v2"} type="text" />
<i className="material-icons" onClick={this.setFocus}> search </i>
</>
);
}
}