dalv_happy
@dalv_happy

Почему не работает роутинг из-за action в React-Redux?

Добрый день, в реакт приложении у меня висит событие onLoad, которое берёт ширину и высоту родителя и делит на константное значение и через экшен диспатчится в хранилище.
И из-за этого не работает роутинг. В чём может быть дело?
Компонента
5b7bd3afd189e977411512.pngЭкшен
5b7bd3e6e2f9c229951440.pngРедьюсер
5b7bd42a3f89d759698787.png
И зачем нужно писать экшен, если можно напрямую диспатч вызвать без посредников?
  • Вопрос задан
  • 126 просмотров
Решения вопроса 1
rockon404
@rockon404 Куратор тега React
Frontend Developer
И из-за этого не работает роутинг.

withRouter(connect(...)(MainLayout));

И зачем нужно писать экшен, если можно напрямую диспатч вызвать без посредников?

Что именно не понятно? Зачем писать функцию? Или почему бы не импортировать store в каждый компонент вручную?
Первое, don't repeat yourself. Второе, сейчас компоненты вообще ничего не знают о store и о месте его хранения, в противном случае будут. Но вам никто не мешает делать как вам удобней.
Исбыточную конструкцию:
dispatch => ({
  onSetScale: (event) => {
    dispatch(setScale(event);
  }
})

Можно сократить до:
{
  onSetScale: setScale,
}


Я не передаю actions через connect, а вызываю так:
componentDidMount() {
  this.props.dispatch(action());
}


Плюс такого решения в том, что можно быстро перейти к месту объявления action. В больших проектах это экономит кучу времени.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы