Компонент <Redirect>
может работать, только если вы вернете его во время рендеринга. Вы не показываете контекст, в котором находится этот код, но, поскольку он асинхронный, невозможно что-либо отобразить.
У вас есть два варианта:
1) Установить состояние, вызывая повторное рендеринг, затем отрендерить <Redirect>
const Example = () => {
const [redirectTo, setRedirectTo] = useState(null);
useEffect(() => {
AuthService.createDesigns(data).then(res => {
if (res.data.status === "success") {
const designId = res.data.data.id
setRedirectTo({
pathname: `${match.url}/${designId}`,
state: hoodieData
})
}
});
}, []);
if (redirectTo) {
return <Redirect to={redirectTo} />
}
// else, render the component as normal
}
2) Или тот, который я бы сделал : используйте history.replace вместо <Redirect>
компонента
const history = useHistory();
useEffect(() => {
AuthService.createDesigns(data).then(res => {
if (res.data.status === "success") {
const designId = res.data.data.id
history.replace(`${match.url}/${designId}`, hoodieData);
}
});
}, []);
// render the component as normal