gpt4 book ai didi

javascript - 如何使用 React-query 通过按钮触发请求?

转载 作者:行者123 更新时间:2023-12-05 01:58:48 26 4
gpt4 key购买 nike

我一直在尝试学习 React-query,但似乎无法通过我的 onSubmit 事件触发请求。现在代码正在发送带有“washington”作为默认参数的请求并将其打印到屏幕上,并且新的请求还会触发 onBlur 事件,如果输入的城市是有效。

事情是希望我可以将此逻辑移至 submit() 函数,处理输入数据,并且仅当数据有效时,才继续发出请求。这是我使用免费 apiKey 重现问题的 stackblitz:StackBlitz

这是代码:

import React, { useState } from 'react';
import { useQuery } from 'react-query';
import axios from 'axios';

const Fetch = async city => {
let apiKey = '91b5ff77e9e7d1985a6c80bbbb3b2034';
const { data } = await axios.get(
`https://api.openweathermap.org/data/2.5/weather?q=${city}&appid=${apiKey}&units=metric`
);
return data;
};

const Weather = () => {
const [city, setCity] = useState('washington');
const { data, error } = useQuery(['temperature', city], () => Fetch(city));

const submit = () => {};

return (
<div>
<form onSubmit={submit}>
<input onBlur={e => setCity(e.target.value)} type="text" />
<button type="submit">send</button>
</form>
{!data ? null : <div>{data.main.temp}</div>}
</div>
);
};

export default Weather;

最佳答案

也可以在表单的onSubmit事件中调用setCity,因为onSubmit事件是在submit事件中获取完整提交的表单:

<form
onSubmit={(event) => {
event.preventDefault();
const city = new FormData(event.currentTarget).get("city");
// do validation here
if (isValid(city)) {
setCity(city)
}
>
<input name="city" type="text" />
<button type="submit">send</button>
</form>

确保为您的输入提供一个名称,以便您可以从表单提交事件中获取它。

关于javascript - 如何使用 React-query 通过按钮触发请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68261332/

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