gpt4 book ai didi

javascript - Next.js,如何将表单提交到另一个页面?

转载 作者:行者123 更新时间:2023-12-01 00:14:03 30 4
gpt4 key购买 nike

(Next.js) 我在一页上有一个 GET 表单。我想将其提交到另一个页面。我知道我可以将 action 属性设置到另一个页面。这样可行。但是,它会重新加载页面,而不仅仅是渲染新页面;与页面上有链接但未将其包装在 Link 组件中的情况相同。

我可以捕获提交事件,构建查询,并将其推送到路由器上。但对于我认为已经解决的问题来说,这似乎需要做很多额外的工作。

有什么想法可以在不重新发明轮子的情况下做到这一点吗?

<form method='get' action='/search'>
<input name='q' placeholder='Search' arial-label='Search' />
</form>

最佳答案

我最终捕获了提交事件并将 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>
)
}

关于javascript - Next.js,如何将表单提交到另一个页面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59888514/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com