Подключение и проблема с роутером

Я использую Redux и React для своего проекта. У меня есть несколько маршрутов в App.js. Я также использую функцию подключения в react-redux в своем проекте. Чтобы предотвратить проблему с блокировкой обновлений, я обычно упаковывал свой компонент таким образом.

withRouter(connect(mapStateToProps, mapDispatchToProps)(App)),

Однако, если я изменил порядок withRouter и подключился, это не сработает:

connect(mapStateToProps, mapDispatchToProps)(withRouter(App))

У меня есть console.info реквизиты в App.js. Он уже получает информацию о местоположении и истории. Я выясняю теорию, почему порядок имеет значение?

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
39
0
24 182
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Ответ принят как подходящий

Не могли бы вы сослаться на этот https://reacttraining.com/react-router/core/api/withRouter, там ясно сказано, что наоборот не работает

Где это сказано? Не могли бы вы процитировать соответствующую часть вашего ответа?

Emile Bergeron 02.10.2021 18:57

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

Aashish Karki 04.10.2021 07:41

Возможно, он упоминал об этом в какой-то момент, но, возможно, с тех пор он изменился!

Emile Bergeron 05.10.2021 16:10

Вы можете использовать его с методом compose из библиотеки Redux.

export default compose(
  withRouter,
  connect(mapStateToProps, mapDispatchToProps)
)(App);

Какими будут значения mapStateToProps, mapDispatchToProps в этом случае? На уровне приложения, как мы должны определить эти два? Разве эти два не относятся к каждому компоненту (чтобы получить те реквизиты от редукса, которые интересуют этот компонент)?

theprogrammer 26.10.2019 07:19
import {compose} from "redux"; //Code export default compose( withRouter, connect(mapStateToProps, mapDispatchToProps) )(App);
kai_onthereal 02.11.2020 08:45

Я сделал это, но теперь у меня есть JSX element type 'App' does not have any construct or call signatures. TS2604

All 06.03.2021 17:23

Если у кого-то все еще есть проблема, пожалуйста, следуйте этому

const ShowTheLocationWithRouter = withRouter(Login);

export default connect(mapStateToProps, mapDispatchToProps)(ShowTheLocationWithRouter);

это не сработает, потому что я получил ошибку, которая вызвала реакцию на то, что функция SetState на странице входа (или компонент, который вы будете обертывать) будет иметь плохое состояние,

Rohan Devaki 10.07.2021 18:16

Вы можете сделать это двумя способами,

Надлежащим образом:

withRouter(connect(mapStateToProps, mapDispatchToAction)(App));

с этим вы сможете получить реквизиты withRouter, такие как история, совпадение и т. д. в mapStateToProps.

2-й способ:

connect(mapStateToProps, mapDispatchToAction)(withRouter(App));

используя это, вы не сможете получить реквизиты withRouter

Это работает отлично. В моем приложении для реагирования v17.... react-router-dom 5 и последняя редукция.

DirtyMind 27.03.2021 01:00

Другие вопросы по теме