В документации по React Router разработчики рассказывают о том, как объект истории изменчив.Их рекомендация не состоит в том, чтобы изменять это напрямую.
https://reacttraining.com/react-router/web/api/history#history-history-is-mutable
К счастью, есть несколько способов программно изменить местоположение пользователя, все еще работая в событиях жизненного цикла React.
Самое простое, что я нашел, также самое новое.React Router использует React Context API, чтобы сделать объект истории, используемый маршрутизатором, доступным для его потомков.Это избавит вас от передачи объекта истории по дереву компонентов через реквизиты.
Единственное, что вам нужно сделать, - убедиться, что ваш AddNewGoalPage
использует объект истории из context
вместо реквизита.
handleSubmit(event)
...
//successful, redirect to all goals
if(res.data)
{
this.context.history.push("/goals")
}
...
})
}
Я не знаю, используете ли вы компонент класса или функциональный компонент для AddNewGoalPage
- но ваш метод handleSubmit намекает, что он является членом класса, поэтомуобъект истории маршрутизатора будет автоматически доступен вам в вашем классе через this.context.history
.
Если вы используете функциональный компонент, вам нужно убедиться, что метод handleSubmit правильно привязан к функциональному компоненту, в противном случае context
параметр функционального компонента, заданный React, не будетдоступно для него.
Не стесняйтесь отвечать мне, если это так.