我试图为我的浏览器创建一个定制的主页。我已经实现了一个API来显示天气,但只有当我按下回车键时才能工作。我想在加载页面时自动显示数据,不按回车键,自动显示布里斯托尔天气,当我键入另一个位置时,api将能够请求和渲染。我尝试了很多方法,比如(删除钩子,改变钩子的初始状态,但似乎没有什么工作)这是我的代码:
const [query, setQuery] = useState('Bristol');
const [weather, setWeather] = useState({});
const search = async () => {
fetch(`${api.base}weather?q=${query}&units=metric&APPID=${api.key}`)
.then(res => res.json())
.then(result => {
setWeather(result);
setQuery('')
console.log(result)
});
}
return(
<div className="app">
<main>
<div className="search-box">
<input
type="text"
className="search-bar"
placeholder="Search..."
onChange={e => setQuery(e.target.value)}
value={query}
onKeyPress={search}
/>
</div>
{(typeof weather.main != "undefined") ? (
<div>
<div className="location-box">
<div className="location">{weather.name}</div>
<div className="date">{dateBuilder(new Date())}</div>
</div>
<div className="weather-box">
<div className="temp">
{Math.round(weather.main.temp)}
</div>
<div className="weather">
{weather.weather[0].main}
</div>
</div>
</div>
) : ('')}
</main>
</div>
)
}
我是ReactJS新手,这有点让人困惑,因为在这里我使用同一个文件来编码和渲染,我以前做过这件事,但我在express中使用的是纯JavaScript,等等。。我把它转换成HTML。
尝试在useffect
中包装fetch
调用:
useEffect(() => {
fetch(`${api.base}weather?q=${query}&units=metric&APPID=${api.key}`)
.then((res) => res.json())
.then((result) => {
setWeather(result);
console.log(result);
});
}, [query]);
第二个参数是所谓的依赖项数组。每当其内容更改时,将重新运行效果,请参见https://reactjs.org/docs/hooks-effect.html.
还删除onKeyPress={search}
,因为它与onChange={e=是冗余的
其他资源:
Robin Wieruch:如何使用React钩子获取数据?https://www.robinwieruch.de/react-hooks-fetch-data
useEffect( () => search(), [])
问题内容: 我才刚开始做出反应,我有点迷茫。我正在尝试制作一个登录页面并发出一个http发布请求。现在,我只是想使任何类型的HTTP请求都能正常工作,所以我使用了请求bin,并在文档中找到了针对npm软件包的这一基本操作(https://www.npmjs.com/package/redux -react-fetch ): 那么,写完一个动作之后,我该怎么办?我实际上如何让我的应用程序调用并使用该
我用python制作了我的rest api,现在我想在客户端部分对其进行测试。我不是很擅长javascript,但我写了这段代码,当按钮被点击时,这使得api请求。但是,当我按下按钮时,应用程序向我显示了这个错误: 我知道这个问题可能很愚蠢,但是如果你知道我做错了什么,请告诉我。我真的很感激! 以下是我的代码:html: script.js:
问题内容: 我在iBooks中阅读了Apple的The Programming Language Swift ,但无法弄清楚如何在Swift中发出HTTP请求(例如cURL)。我需要导入Obj- C类还是只需要导入默认库?还是无法基于本机Swift代码发出HTTP请求? 问题答案: 您可以使用,而且还是因为你通常在Objective- C做。请注意,对于iOS 7.0和更高版本,它是首选。 使用
我在iBooks上读过Apple的编程语言Swift,但不知道如何在Swift中发出HTTP请求(类似于cURL)。我需要导入Obj-C类还是只需要导入默认库?或者不可能基于本机Swift代码发出HTTP请求?
我在iBooks中阅读了苹果公司的编程语言Swift,但不知道如何在Swift中发出HTTP请求(类似cURL的东西)。我需要导入Obj-C类还是只需要导入默认库?还是不能基于原生Swift代码进行HTTP请求?
问题内容: 如何在node.js中使用数据发出出站HTTP POST请求? 问题答案: 这是一个使用node.js向Google Compiler API发出POST请求的示例: 我已经更新了代码,以显示如何从文件而不是硬编码的字符串发布数据。它使用async 命令来实现此目的,并在成功读取后发布实际代码。如果有错误,则抛出该错误,如果没有数据,则该过程以负值退出以指示失败。