我想把输入值作为路由参数发送到服务器。我应该写一个函数来编码值吗?我正在尝试在没有任何库的情况下完成这项工作。
巧合的是,我错误地输入了localhost 8000,然后浏览器将localhost 3000 url附加到8000,只有这样设置的Search Params才起作用,我确实得到了附加到路由参数的值,但是服务器的url显然不是正确的。下面是我的代码:
import axios from 'axios';
import React, { useState } from 'react';
import { useSearchParams } from 'react-router-dom';
const AddProductForm = ({ id }) => {
let [searchParams, setSearchParams] = useSearchParams();
const [input, setInput] = useState({
title: '',
price: '',
rating: '',
description: '',
});
const handleSubmit = (e) => {
e.preventDefault();
setSearchParams(input)
axios
.put(`http://localhost:8080/api/v1/products/${id}?` + searchParams)
.then((res) => console.log(res))
.catch((err) => console.log(err));
};
const onChange = (e) => {
//function to handle change of each input
}
return (
<div className='container' >
<form className='form' onSubmit={handleSubmit}>
<div className='form_inputs'>
<h1>Edit Product</h1>
<div className='flex-column'>
<label>Add new title</label>
<input
type='text'
value={input.title}
onChange={onChange}
name='title'
placeholder='Title'
/>
</div>
<div className='flex-column'>
<label>Add new price</label>
<input
type='number'
value={input.price}
onChange={onChange}
name='price'
placeholder='Price'
/>
</div>
//All other inputs
<button className='btn-block' type='submit'>
Create
</button>
</form>
</div>
);
};
export default AddProductForm;
提交时,我只得到空对象URLSearchParams{}
1条答案
按热度按时间ncecgwcz1#
setSearchParams
函数的工作原理与navigate
函数类似,它实现了一个导航操作,但只更新当前URL的搜索字符串。代码实际上并没有更新searchParams
变量。您想要取得
input
状态并建立新的URLSearchParams
对象。示例: