我已经搜索了一段时间,所以这不应重复。但是,我试图在按下Enter键时触发链接点击。
这就是我正在使用的:
auto
搜索输入:
handleKeyPress(target) {
if(target.charCode==13){
alert('Enter clicked!!!');
}
}
使用React Instant Search我想在单击enter时提交输入“值”。目前,我只能在物理点击以下内容时提交该值:
<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>
我可以触发该链接。但是,当我也按Enter键时,如何获得与单击链接相同的功能?关于如何通过KeyPress链接到搜索值的任何建议?
答案 0 :(得分:1)
根据react-statics documentation,他们建议installing Reach Router进行动态路由。要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}`;
}
}
答案 1 :(得分:1)
如果您已经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
。