Я новичок во фронтенд-разработке. Сейчас занимаюсь проработкой проекта (простой редактор задач, без серверной части) на базе reactJs+redux. Столкнулся со следующей проблемой.
У меня есть компонент, который показывает веб-страницу по URL-адресу '/addTask/'.
const TaskCreator = ({ tasks, onAddTask }) => {
...
const addTask = () => {
const newTask = {
id: newId,
header: headerInput.value,
description: descriptionInput.value
}
onAddTask(newTask);
}
return(
<div>
...
<button className='btn btn-success' onClick={addTask}>Save</button>
</div>
);
}
export default connect(
(state) => ({
tasks: state.tasks
}),
dispatch => ({
onAddTask: (task) => {
const payload = {
id: task.id,
header: task.header,
description: task.description
};
dispatch({ type: 'ADD_TASK', payload });
browserHistory.push('/');
}
})
)(TaskCreator);
Когда пользователь нажимает кнопку Save
. addTask
звонил. После этого метод onAddTask
сработал, а команда ADD_TASK
задачи была отправлена. После того, как новая задача добавлена в состояние, необходимо перенаправить на URL-адрес /
.
Когда я вставляю оператор browserHistory.push('/')
, браузер перенаправляется на URL-адрес /
, но не обновляет состояние новой задачей. Если я удалю оператор browserHistory.push('/')
вот так
onAddTask: (task) => {
const payload = {
id: task.id,
header: task.header,
description: task.description
};
dispatch({ type: 'ADD_TASK', payload });
}
Состояние обновилось, но браузер не перенаправил.
Как я могу асинхронно обновить состояние (используя диспетчеризацию) и после обновления состояния перенаправить на URL-адрес /
?
Спасибо за аванс
dispatch(addTaskAction(task)).then((response) => { dispatch(push('/')); });
, но получил ошибку: Невозможно прочитать свойство «тогда» неопределенного. - person foxis   schedule 31.08.2017