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>
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>
   )
}
| 归档时间: | 
 | 
| 查看次数: | 11865 次 | 
| 最近记录: |