【发布时间】:2023-04-06 17:10:01
【问题描述】:
我正在编写一个使用react 和react-router 进行路由的客户端渲染Web 应用程序。我已经在form 和react-bootstrap 中实现了一个带有input 的搜索。
executeSearch(){
...
window.location.href = '/#/search/' + formattedURL
}
let formSettings = {
onSubmit:this.executeSearch.bind(this),
id:"xnavbar-form"
}
const searchButton =
<Button
onClick={this.executeSearch.bind(this)}>
<Glyphicon glyph="search" />
</Button>
const searchInput =
<form>
<Input
type="text"
ref="searchInput"
buttonAfter={searchButton}
placeholder="search"/>
</form>
... Jumping to the render function
<Navbar.Form
{...formSettings}>
{searchInput}
</Navbar.Form>
在Mozilla Firefox 中执行搜索按预期工作:按回车键并单击searchButton 将我路由到客户端呈现的页面.../#/search/...。
在Google Chrome 中执行搜索的行为如下:单击searchButton 的工作方式与上面类似(客户端渲染),但按回车键会导致服务器重定向.../?#/search...。
我发现它是由表单的submit 属性引起的,如何修改它以在客户端上呈现?
我正在考虑听一个键盘 ascii 代码(回车)来执行搜索,但它似乎有点乱。
【问题讨论】:
-
如果您只是切换哈希(而不是页面位置和哈希),请尝试更改 location.hash 而不是
href -
我确实需要更改路线,因为我使用
react-router作为我的“组件加载器”,它不仅仅是更改哈希。和ajax有什么关系?我不想向服务器发送请求... -
您听说过 AJAX 或 Google 吗?下面还有更多重复的答案...
-
您听说过客户端渲染吗? AJAX 与它无关。
标签: javascript html forms reactjs react-router