【发布时间】:2022-01-20 10:47:34
【问题描述】:
以下成员函数使用假数据异步填充 folder_structure 对象:
fake(folders_: number, progress_callback_: (progress_: number) => void = (progress_: number) => null): Promise<boolean>
{
return new Promise((resolve, reject) => {
for (let i_ = 0; i_ < folders_; i_++) {
progress_callback_(i_ / folders_ * 100.);
this.add(this.id(), faker.address.city() + i_, random_choice(this.folder_structure_id()));
}
progress_callback_(folders_ / folders_ * 100.);
resolve(true);
})
}
它使用回调来更新for 循环中的进度,然后使用该循环从具有空依赖数组的useEffect() 函数中更新状态(进度条)。
let [progress_state_, set_progress_state_] = useState<number>(0);
let [fake_done_, set_fake_done_] = useState<boolean>(false);
useEffect(() =>
{
if (fake_)
folder_structure_.fake(fake_, (progress_) => {
set_progress_state_(progress_)
}).then(value => set_fake_done_(value));
}, [])
if (!fake_ || fake_done_) etc etc
但是,状态没有更新(在控制台中记录进度似乎工作正常)。关于是否可以从 useEffect 中更新状态的任何想法?
【问题讨论】:
标签: javascript reactjs typescript oop