Мне нужно использовать функцию обратного вызова сразу после обновления обработчика состояния.
Перед обработчиками я мог бы сделать это очень простым способом, следующим образом:
myFunction= () => {
this.setState({
something: "something"
}, () => {
// do something with this.state
})
}
Вот мой код:
const EmployeeDetails = () =>
const [state, setState] = useState({
employee: undefined,
companyDocuments: undefined,
personalDocuments: undefined,
});
useEffect(() => {
const fetchData = async () => {
axios
.all([
await axios.get("someUrl"),
await axios.get("someUrl"),
await axios.get("someUrl"),
])
.then(
axios.spread((...responses) => {
setState({
employee: responses[0].data,
companyDocuments: responses[1].data,
personalDocuments: responses[2].data,
});
})
)
.catch(errors => {});
};
fetchData()
.then(processMyEmployee); // should be called something like this
}, []);
const processMyEmployee= () => {
// crash because state.employee is not fetched yet
}
return (
<div>it works!</div>
);
};
Я видел некоторые другие предложения по стеку, большинство из них подразумевает использование пользовательских хуков, но я считаю, что это обычная проблема и, следовательно, должно быть обычным решением для ее решения.