如何在 React 中使用 post 请求提交输入值?
How can I submit an input value with a post request in React?
我正在尝试 post 请求开始日期、结束日期和我的计划中的来宾人数。 post 开始日期和结束日期的请求有效。但是,我在提交客人数量的输入值时遇到问题。我的客人人数值 returns 在控制台中未定义。
很可能我在处理提交时犯了一个错误,但我不知道如何解决这个问题。有人可以帮我解决这个问题吗?
function Search() {
const history = useHistory();
const [startDate, setStartDate] = useState(new Date());
const [endDate, setEndDate] = useState(new Date());
const [numberOfGuests, setNumberOfGuests] = useState();
const selectionRange = {
startDate: startDate,
endDate: endDate,
key: "selection"
};
const handleSubmit = event => {
setNumberOfGuests(event.numberOfGuests);
event.preventDefault()
}
function handleSelect(ranges) {
setStartDate(ranges.selection.startDate);
setEndDate(ranges.selection.endDate);
}
const onSearch = useCallback(() => {
console.log("startDate: ", startDate);
console.log("endDate: ", endDate);
console.log("numberOfGuests", numberOfGuests);
axios
.post(`/availableapartments`, {
startDate,
endDate,
numberOfGuests
})
.then((res) => {
console.log(res);
console.log(res.data);
history.push('/availableapartments')
});
}, [startDate, endDate, numberOfGuests]);
return (
<div className="datepickersearch">
<DateRangePicker ranges={[selectionRange]} onChange={handleSelect} />
<h2> Number of guests</h2>
<input min={0} defaultValue={2} max={7} type="number" event={[numberOfGuests]} onChange={handleSubmit} />
<Button onClick={onSearch}>Search Apartments</Button>
</div>
);
}
export default Search;
将您的 handlesubit 方法更改为
const handleSubmit = event => {
setNumberOfGuests(event.target.value);
event.preventDefault()
}
您的事件 event
值包含在 target.value 中
使用 event.target.value
访问数据
input 元素既不接受 event
也不接受 defaultValue
属性,如您的代码所示,请参阅 https://www.w3schools.com/tags/tag_input.asp 以供参考 React DOM 坚持原生 DOM API.
在 React 中,你可以让状态控制你的 输入 通过添加一个 value
属性来引用你的状态:
<input
min={0}
max={7}
value={numberOfGuests}
// etc..
/>
此外,您需要添加一个更改处理程序才能修改状态:
<input
value={numberOfGuests}
onChange={handleNumberOfGuestChange}
/>
const handleNumberOfGuestChange = (event) => setNumberOfGuests(event.target.value);
你可能想阅读官方文档,它很好地解释了这一点,并会为你提供开始使用 React 所需的一切 https://reactjs.org/docs/forms.html#controlled-components
我正在尝试 post 请求开始日期、结束日期和我的计划中的来宾人数。 post 开始日期和结束日期的请求有效。但是,我在提交客人数量的输入值时遇到问题。我的客人人数值 returns 在控制台中未定义。 很可能我在处理提交时犯了一个错误,但我不知道如何解决这个问题。有人可以帮我解决这个问题吗?
function Search() {
const history = useHistory();
const [startDate, setStartDate] = useState(new Date());
const [endDate, setEndDate] = useState(new Date());
const [numberOfGuests, setNumberOfGuests] = useState();
const selectionRange = {
startDate: startDate,
endDate: endDate,
key: "selection"
};
const handleSubmit = event => {
setNumberOfGuests(event.numberOfGuests);
event.preventDefault()
}
function handleSelect(ranges) {
setStartDate(ranges.selection.startDate);
setEndDate(ranges.selection.endDate);
}
const onSearch = useCallback(() => {
console.log("startDate: ", startDate);
console.log("endDate: ", endDate);
console.log("numberOfGuests", numberOfGuests);
axios
.post(`/availableapartments`, {
startDate,
endDate,
numberOfGuests
})
.then((res) => {
console.log(res);
console.log(res.data);
history.push('/availableapartments')
});
}, [startDate, endDate, numberOfGuests]);
return (
<div className="datepickersearch">
<DateRangePicker ranges={[selectionRange]} onChange={handleSelect} />
<h2> Number of guests</h2>
<input min={0} defaultValue={2} max={7} type="number" event={[numberOfGuests]} onChange={handleSubmit} />
<Button onClick={onSearch}>Search Apartments</Button>
</div>
);
}
export default Search;
将您的 handlesubit 方法更改为
const handleSubmit = event => {
setNumberOfGuests(event.target.value);
event.preventDefault()
}
您的事件 event
值包含在 target.value 中
使用 event.target.value
访问数据
input 元素既不接受 event
也不接受 defaultValue
属性,如您的代码所示,请参阅 https://www.w3schools.com/tags/tag_input.asp 以供参考 React DOM 坚持原生 DOM API.
在 React 中,你可以让状态控制你的 输入 通过添加一个 value
属性来引用你的状态:
<input
min={0}
max={7}
value={numberOfGuests}
// etc..
/>
此外,您需要添加一个更改处理程序才能修改状态:
<input
value={numberOfGuests}
onChange={handleNumberOfGuestChange}
/>
const handleNumberOfGuestChange = (event) => setNumberOfGuests(event.target.value);
你可能想阅读官方文档,它很好地解释了这一点,并会为你提供开始使用 React 所需的一切 https://reactjs.org/docs/forms.html#controlled-components