gpt4 book ai didi

javascript - useEffect Hook 依赖项未更新

转载 作者:行者123 更新时间:2023-11-28 14:09:56 27 4
gpt4 key购买 nike

我正在 useEffect Hook 内进行 API 调用,如下所示:

useEffect(() => {
fetchPatientsStartAsync(patientListUrl);
}, [patientListUrl]);

在我的代码中,我还有两个其他状态变量和一个方法,如下所示:

 const [d, setD] = useState(new Date());
const [patientListUrl, setUrl] = useState(`${baseUrl}api/patient/list?date=${getDate()}`);

function getDate() {
return new Date(d.getFullYear(),d.getMonth(),d.getDate())
}

我正在使用日期选择器库来更新“d”(日期)。每当日期更改时,我都会调用 setUrl 并期望 useEffect Hook 再次运行。调用过程如下:

    <DatePicker
onChange={onChange}
value={d}
clearIcon={null}
/>
const onChange = dt => {
setD(dt);
setUrl(`${baseUrl}api/patient/list?date=${getDate()}`);
};

但这并没有更新我的“patentListUrl”变量。这里做错了什么?

我只是希望使用更新后的“patentListUrl”再次进行 API 调用。

最佳答案

问题在于异步函数中的 useD,因此当您调用 getDate 时,d 不会更新,因此您应该将 dt 传递给 getDate 函数以获取更新的 URL。

function getDate(dt) {
return new Date(dt.getFullYear(),dt.getMonth(),dt.getDate())
}
const onChange = dt => {
setD(dt);
setUrl(`${baseUrl}api/patient/list?date=${getDate(dt)}`);
};

关于javascript - useEffect Hook 依赖项未更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59962745/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com