Next.js router.push未跳转指定URL反而拼接参数的问题求助
问题解决方法
核心错误:阻止表单默认行为的方法拼写错误
你的submitHandler里的e.prevent.default()是拼写错误,正确写法应为e.preventDefault()。这个错误导致表单的默认GET提交行为未被阻止,浏览器会直接把表单数据拼接到URL上,而非执行你编写的router.push跳转逻辑。
修正后的submitHandler代码:
const router = useRouter(); const [selectedPaymentMethod, setSelectedPaymentMethod] = useState(''); const { state, dispatch } = useContext(Store); const { cart } = state; // 确保已从state中解构cart const submitHandler = (e: any) => { e.preventDefault(); // 修正拼写错误 dispatch({ type: 'SAVE_PAYMENT_METHOD', payload: selectedPaymentMethod }); // 修正Cookies存储逻辑(以js-cookie库为例) Cookies.set('cart', JSON.stringify({ ...cart, paymentMethod: selectedPaymentMethod })); router.push('/placeorder'); };
额外检查点
- 确认
cart变量已从state中正确解构,否则Cookies存储逻辑会报错 - 验证你使用的Cookies库(如js-cookie)已正确安装并导入,避免存储逻辑中断后续代码执行
内容的提问来源于stack exchange,提问作者JSharles
相关产品推荐
相关产品推荐

