【发布时间】:2021-12-29 09:15:30
【问题描述】:
当我更改选择器组件中的值时,我需要从我的 API 中检索数据。所以我所做的是创建一个函数来获取我的数据,并在我的选择器“onChange”中调用它。现在我的问题是,在我的 fetch 函数中,我使用了一个我在调用它之前设置的变量。当我第一次更改选择器值时,我的 useState 变量未设置(或我的应用程序未检测到),当我第二次更改值时,它终于起作用了。我该如何解决?
选择器组件:
<Select
labelId="demo-statut-label"
id="demo-statut"
defaultValue={""}
value={projetName}
onChange={handleSelectProjectChange}
input={<OutlinedInput label="Projet"/>}
MenuProps={MenuProps}
>
{projets.map((projet) => (
<MenuItem
value={projet}
>
{projet.nom}
</MenuItem>
))}
</Select>
onChange函数:
const handleSelectProjectChange = (event) => {
setProjetName(event.target.value);
getClientByProject();
};
获取函数:
function getClientByProject() {
axios
.get(API_URL_CLIENT_BY_ACTIVITE + projetName.id)
.then((response) => {
if(response.status === 200) {
setClient(response.data);
console.log('Response : ', response.data);
}
})
.catch((error) => {
console.log(error);
})
}
使用状态:
const tab = projets !== null && projets !== undefined && projets.length > 0 ? projets[0] : {}
const [projetName, setProjetName] = useState(tab);
【问题讨论】:
-
一种选择可能是将
projetName传递给函数getClientByProject。这样您就可以确保使用正确的状态。
标签: javascript reactjs api react-hooks