要实现在 certainTabs 和 brandSearch 两个参数都改变时只执行一次,可以使用一个额外的状态变量来控制。下面是一个可能的解决方案:
const [shouldExecute, setShouldExecute] = useState(true);
useEffect(() => {
if (shouldExecute) {
const allParamsFilled = !Object.values(brandSearch).some(param => param === '');
if (allParamsFilled) {
setCurrent(1);
setPageSize(10);
}
proxyList(brandSearch, certainTabs, current, pageSize); // 执行 proxyList 并设置 current 和 pageSize 为 1
setShouldExecute(false);
}
}, [certainTabs, brandSearch]);
// 在某个地方修改 certainTabs 或 brandSearch 的代码中,加上以下逻辑即可:
setShouldExecute(true);
通过引入 shouldExecute 状态变量,我们可以在每次执行之前判断是否应该执行。当 certainTabs 或 brandSearch 发生变化时,将 shouldExecute 设置为 true,这样在下一次渲染时会触发 useEffect 内部的逻辑,并将其设置为 false 防止重复执行。这样就能保证只有在两个参数都改变时才会执行一次。
内容由零声教学AI助手提供,问题来源于学员提问




