【发布时间】:2021-03-24 12:49:34
【问题描述】:
我需要有 2 个不同的函数,在开始时只更新 2 个不同的组件一次。因此,我使用useEffect。代码如下
const loadCategories = () => {
getCategories().then((c) => setValues({ ...values, categories: c.data }));
}
const loadStores = () => {
getStores().then((c) => setValues({ ...values, stores: c.data }));
}
useEffect(() => {
loadStores();
loadCategories();
}, []);
这两个函数都在设置下拉元素的值
问题是虽然两个函数都执行了,但只有loadCategories()函数逻辑反映在UI中。如何让这两个函数的逻辑都体现在 UI 中?
【问题讨论】:
-
useEffect函数在loadStores内部吗?看起来你可能有无限递归? -
不,它在
loadStores之外。 2 个load函数在useEffect之外 -
我可以得出结论的唯一原因是,
loadCategories()覆盖loadStores()但这不是导致categories中的第一个设置状态和stores中的第二个设置状态。您能否尝试仅运行第一个函数loadStories()并检查该函数是否单独更新 UI。也许问题出在其中,或者在 UI 上应用时。 -
@PredragDavidovic 当我在
useEffect中只使用一个函数时,它工作正常,但是当我一个接一个地使用两个函数时,最后一个函数将在 UI 中反映出来,即使这两个函数跑了
标签: javascript reactjs use-effect