使用 React 按下回车键时单击 link
Clicking a link when enter key is pressed using React
我已经搜索了一段时间所以这应该不是重复的。但是,我试图在按下回车键时触发 link 单击。
这就是我正在使用的:
handleKeyPress(target) {
if(target.charCode==13){
alert('Enter clicked!!!');
}
}
搜索输入:
<SearchBox
type="text"
value={value}
onChange={e => this.onChange(e)}
className="search-box"
placeholder="Search"
aria-label="search"
aria-describedby="basic-addon2"
onKeyPress={this.handleKeyPress}
/>
<div>
<Link to={`/search?q=${value}`} className="btn submit-button"><i className="fa fa-search"></i></Link>
</div>
使用 React Instant Search 我想在单击输入时提交输入 'value'。目前我只能在物理点击时提交值:
<div>
<Link to={`/search?q=${value}`} className="btn submit-button"><i className="fa fa-search"></i></Link>
</div>
我可以让 link 开火。但是,当我也按回车键时,如何才能获得与 link 单击相同的功能?关于如何通过 KeyPress link 搜索值有什么建议吗?
根据 react-statics documentation they recommend installing Reach Router for dynamic routing. To navigate programmatically with Reach Router 你应该可以导入 navigate
.
import { navigate } from "@reach/router"
...
handleKeyPress(target) {
// I'm guessing you have value stored in state
const { value } = this.state;
if(target.charCode==13){
navigate(`/search?q=${value}`);
}
}
选项 2
老实说,当您 可能 只需 javascript.
时,这似乎是很多工作
handleKeyPress(target) {
// I'm guessing you have value stored in state
const { value } = this.state;
if(target.charCode==13){
const { href } = window.location;
window.location.href = `${href}/search?q=${value}`;
}
}
如果您已经react-router-dom
,您可以使用以下内容:
import { withRouter } from 'react-router-dom'
class *ClassName* extends React.Component {
..
handleKeyPress(target, value) {
const { history } = this.props;
if(target.charCode==13){
history.push(`/search?q=${value}`);
}
}
..
render() {
return (
..
<SearchBox
value={value}
..
onKeyPress={e => this.handleKeyPress(e, value)}
/>
)
}
..
}
export default withRouter(*ClassName*);
重要的是您使用 withRouter(..)
导出从道具中获取 history
。
我已经搜索了一段时间所以这应该不是重复的。但是,我试图在按下回车键时触发 link 单击。
这就是我正在使用的:
handleKeyPress(target) {
if(target.charCode==13){
alert('Enter clicked!!!');
}
}
搜索输入:
<SearchBox
type="text"
value={value}
onChange={e => this.onChange(e)}
className="search-box"
placeholder="Search"
aria-label="search"
aria-describedby="basic-addon2"
onKeyPress={this.handleKeyPress}
/>
<div>
<Link to={`/search?q=${value}`} className="btn submit-button"><i className="fa fa-search"></i></Link>
</div>
使用 React Instant Search 我想在单击输入时提交输入 'value'。目前我只能在物理点击时提交值:
<div>
<Link to={`/search?q=${value}`} className="btn submit-button"><i className="fa fa-search"></i></Link>
</div>
我可以让 link 开火。但是,当我也按回车键时,如何才能获得与 link 单击相同的功能?关于如何通过 KeyPress link 搜索值有什么建议吗?
根据 react-statics documentation they recommend installing Reach Router for dynamic routing. To navigate programmatically with Reach Router 你应该可以导入 navigate
.
import { navigate } from "@reach/router"
...
handleKeyPress(target) {
// I'm guessing you have value stored in state
const { value } = this.state;
if(target.charCode==13){
navigate(`/search?q=${value}`);
}
}
选项 2
老实说,当您 可能 只需 javascript.
时,这似乎是很多工作handleKeyPress(target) {
// I'm guessing you have value stored in state
const { value } = this.state;
if(target.charCode==13){
const { href } = window.location;
window.location.href = `${href}/search?q=${value}`;
}
}
如果您已经react-router-dom
,您可以使用以下内容:
import { withRouter } from 'react-router-dom'
class *ClassName* extends React.Component {
..
handleKeyPress(target, value) {
const { history } = this.props;
if(target.charCode==13){
history.push(`/search?q=${value}`);
}
}
..
render() {
return (
..
<SearchBox
value={value}
..
onKeyPress={e => this.handleKeyPress(e, value)}
/>
)
}
..
}
export default withRouter(*ClassName*);
重要的是您使用 withRouter(..)
导出从道具中获取 history
。