【发布时间】:2019-11-30 01:00:33
【问题描述】:
我有一个 React 应用程序,我有一个应用程序容器,我想在其中调用 fetch 以获取一些数据以传递给需要该信息的组件。
我在 onload 函数(我的 fetch 所在的位置)之外声明了变量,并在 fetch 中为它们分配了不同的值。它们的变量将在 fetch 中发生变化,但在 fetch 之外它们保持不变。
为什么他们没有保持改变,有没有办法解决这个问题?
我尝试更改使用 var 而不是 let 声明的变量,并且尝试将函数放在 const 中。
我也尝试将 fetch 放在其他组件中(如下所示的 Table),但是我必须声明两个状态并在 fetch 中调用 fetch,因为我已经在那里调用了另一个 fetch 并且它变得很麻烦...
let latestRelease = 0;
let draftRelease = 0;
let doClone = false;
function onload() {
fetch(url, {
method: 'GET'
})
.then(function(response) {
return response.json();
})
.then(function(result) {
for(var i = 0; i < result.length; i++)
{
if(result[i].id > latestRelease && result[i].status === "released") {
latestRelease = result[i].id;
}
if(result[i].id > draftRelease && result[i].status === "draft") {
draftRelease = result[i].id;
}
}
if(latestRelease > draftRelease) {
doClone = true;
}
})
.catch((error) => {
console.log(error);
});
}
const App: React.FC = () => {
onload()
return (
<React.Fragment>
<CssBaseline />
<Container fixed>
<PersistentDrawerLeft/>
{console.log(latestRelease)} //displays 0
<Title/>
<Table />
</Container>
</React.Fragment>
);
}
export default App;
我希望 latestRelease 和 draftRelease 不会保持为 0,而是大于 0,但输出仅为 0。返回正确的值后,我希望将它们作为 props 传递给组件。
非常感谢!
【问题讨论】:
-
你的
onload函数调用了什么? -
@ZaidCrouch 啊!到目前为止什么都没有,但是如果我在 return() 之前调用它,它不会改变 console.log(latestRelease) 的输出
标签: javascript reactjs typescript fetch-api