Cul*_*lly 9 javascript reactjs next.js
( Next.js ) 我在一页上有一个 GET 表单。我想把它提交到另一个页面。我知道我可以将该action
属性设置为其他页面。那个有效。但是,它会重新加载页面,而不仅仅是渲染新页面;如果您在页面上有一个链接而不将其包装在Link
组件中,就会发生同样的情况。
我可以捕获提交事件,构建查询,并将其推送到路由器上。但是对于我认为已经弄清楚的事情,这似乎是很多额外的工作。
任何想法如何在不重新发明轮子的情况下做到这一点?
<form method='get' action='/search'>
<input name='q' placeholder='Search' arial-label='Search' />
</form>
Run Code Online (Sandbox Code Playgroud)
Cul*_*lly 16
我最终捕获了提交事件并将 URL 推送到路由器上。
import {useState} from 'react'
import {useRouter} from 'next/router'
const preventDefault = f => e => {
e.preventDefault()
f(e)
}
export default ({action = '/search'}) => {
const router = useRouter()
const [query, setQuery] = useState('')
const handleParam = setValue => e => setValue(e.target.value)
const handleSubmit = preventDefault(() => {
router.push({
pathname: action,
query: {q: query},
})
})
return (
<form onSubmit={handleSubmit}>
<input
type='text'
name='q'
value={query}
onChange={handleParam(setQuery)}
placeholder='Search'
aria-label='Search'
/>
</form>
)
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
11865 次 |
最近记录: |