Я использую Redux и React для своего проекта. У меня есть несколько маршрутов в App.js. Я также использую функцию подключения в react-redux в своем проекте. Чтобы предотвратить проблему с блокировкой обновлений, я обычно упаковывал свой компонент таким образом.
withRouter(connect(mapStateToProps, mapDispatchToProps)(App)),
Однако, если я изменил порядок withRouter и подключился, это не сработает:
connect(mapStateToProps, mapDispatchToProps)(withRouter(App))
У меня есть console.info реквизиты в App.js. Он уже получает информацию о местоположении и истории. Я выясняю теорию, почему порядок имеет значение?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Не могли бы вы сослаться на этот https://reacttraining.com/react-router/core/api/withRouter, там ясно сказано, что наоборот не работает
о, привет, я думал, что это упоминалось в самом документе, но, глядя на него сейчас, кажется, что его нет, может быть, я ошибался
Возможно, он упоминал об этом в какой-то момент, но, возможно, с тех пор он изменился!
Вы можете использовать его с методом compose из библиотеки Redux.
export default compose(
withRouter,
connect(mapStateToProps, mapDispatchToProps)
)(App);
Какими будут значения mapStateToProps, mapDispatchToProps в этом случае? На уровне приложения, как мы должны определить эти два? Разве эти два не относятся к каждому компоненту (чтобы получить те реквизиты от редукса, которые интересуют этот компонент)?
import {compose} from "redux"; //Code export default compose( withRouter, connect(mapStateToProps, mapDispatchToProps) )(App);Я сделал это, но теперь у меня есть JSX element type 'App' does not have any construct or call signatures. TS2604
Если у кого-то все еще есть проблема, пожалуйста, следуйте этому
const ShowTheLocationWithRouter = withRouter(Login);
export default connect(mapStateToProps, mapDispatchToProps)(ShowTheLocationWithRouter);
это не сработает, потому что я получил ошибку, которая вызвала реакцию на то, что функция SetState на странице входа (или компонент, который вы будете обертывать) будет иметь плохое состояние,
Вы можете сделать это двумя способами,
Надлежащим образом:
withRouter(connect(mapStateToProps, mapDispatchToAction)(App));
с этим вы сможете получить реквизиты withRouter, такие как история, совпадение и т. д. в mapStateToProps.
2-й способ:
connect(mapStateToProps, mapDispatchToAction)(withRouter(App));
используя это, вы не сможете получить реквизиты withRouter
Это работает отлично. В моем приложении для реагирования v17.... react-router-dom 5 и последняя редукция.
Где это сказано? Не могли бы вы процитировать соответствующую часть вашего ответа?