【发布时间】:2021-04-02 02:28:36
【问题描述】:
我正在尝试为我的浏览器创建自定义主页。我已经实现了一个 API 来显示天气,但只有在我按 Enter 时才有效。我想在加载页面时自动显示数据,无需按 Enter,自动显示布里斯托尔天气,当我键入另一个位置时,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 .
【问题讨论】:
-
你可能需要修改 ReactJS hooks reactjs.org/docs/hooks-overview.html.
-
@NishargShah 快到了,它会加载,但不到 1 秒就会自动清除。
标签: javascript reactjs