Задать вопрос
dalv_happy
@dalv_happy

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

Добрый день, в реакт приложении у меня висит событие onLoad, которое берёт ширину и высоту родителя и делит на константное значение и через экшен диспатчится в хранилище.
И из-за этого не работает роутинг. В чём может быть дело?
Компонента
5b7bd3afd189e977411512.pngЭкшен
5b7bd3e6e2f9c229951440.pngРедьюсер
5b7bd42a3f89d759698787.png
И зачем нужно писать экшен, если можно напрямую диспатч вызвать без посредников?
  • Вопрос задан
  • 128 просмотров
Подписаться 1 Средний Комментировать
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Мидл фронтенд-разработчик
    5 месяцев
    Далее
  • Javascript.ru
    Курс по React
    5 недель
    Далее
  • Нетология
    Fullstack-разработчик на Python + нейросети
    20 месяцев
    Далее
Решения вопроса 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. В больших проектах это экономит кучу времени.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы