【发布时间】:2022-12-16 10:22:09
【问题描述】:
我知道已经有一篇关于这个问题的帖子,但它看起来不像我的。
在我的应用程序中,我从 API 生成随机建议:
const Home = () => {
const [advice, setAdvice] = useState({});
const handleClick = async () => {
try {
const res = await fetch("https://api.adviceslip.com/advice");
const data = await res.json();
setAdvice((prevCount) => ({...prevCount, data.slip}) );
console.log("my res", advice.advice)
} catch (err) {
console.log(err);
}
}
useEffect(() => {
handleClick();
}, []);
return (
<div>
<Head>
<title>Create Next App</title>
<meta name="description" content="Advice generator app" />
<link rel="icon" href="/favicon.ico" />
</Head>
<Box handleClick={handleClick} advice={advice.advice} key={advice.id} />
</div>
)
}
单击事件在另一个组件中:
const Box = ( { handleClick, advice }) => {
return (
<button className='ag-advice__btn' onClick={handleClick}></button>
)
}
第一次显示建议,我需要点击2次才能显示下一个建议。
【问题讨论】:
-
您是否等待 REST API 的 HTTP 请求完成?
-
将其包裹在
useCallback中。 -
console.log("my res", advice.advice)如果此日志语句是您认为它不起作用的原因,那只是因为这行代码记录了以前的状态。如果您想注销新状态,请将您的日志语句放在组件的主体中,它会在组件重新呈现时记录。
标签: javascript reactjs fetch fetch-api