gpt4 book ai didi

reactjs - React router v4 不支持 Redux

转载 作者:行者123 更新时间:2023-12-03 13:07:03 25 4
gpt4 key购买 nike

使用 React router v4 开发 React 应用程序。一切都运行良好,直到我在我的应用程序中引入 Redux。从那时起,单击链接以更改路由时,浏览器 URL 会发生变化,但与该路由相对应的组件不会被加载。如果我注释掉 Redux 代码,效果会很好。可能是什么原因造成的?这是我的路由代码:

import React, { Component } from 'react';
import { Switch, Route, Link } from 'react-router-dom';
import LeftSubDefault from './../components/left-sub-default.component';
import LeftSubOne from './../components/left-sub-one.component';
import LeftSubTwo from './../components/left-sub-two.component';
import { withRouter } from 'react-router-dom';
import { connect } from "react-redux";
import { goToLeftDefault, goToLeftOne, goToLeftTwo } from "./../actions/leftRouteActions.js";

class LeftComponent extends Component {
render() {
return (
<div className="col-xs-6">
<p>
Current sub route: {this.props.currentRoute}
</p>
<ul>
<li onClick={this.props.goToDefault}><Link to={'/'}>Go To Default</Link></li>
<li onClick={this.props.goToSub1}><Link to={'/left-sub1'}>Go To One</Link></li>
<li onClick={this.props.goToSub2}><Link to={'/left-sub2'}>Go To Two</Link></li>
</ul>
<Switch>
<Route exact path='/' component={LeftSubDefault} />
<Route exact path='/left-sub1' component={LeftSubOne} />
<Route exact path='/left-sub2' component={LeftSubTwo} />
</Switch>
</div>
);
}
}
const mapStateToProps = (store) => {
return {
currentRoute: store.routes.currentRoute
};
}
const mapDispatchToProps = (dispatch) => {
return {
goToDefault: () => {
dispatch(goToLeftDefault())
},
goToSub1: () => {
dispatch(goToLeftOne())
},
goToSub2: () => {
dispatch(goToLeftTwo())
}
};
}
export default withRouter(connect(mapStateToProps, mapDispatchToProps)(LeftComponent));

PS:我在控制台中没有收到错误。代码运行干净,只是组件不加载。这是 github 上的类似线程:4671 。我在各个网站上看到过很多帖子,但没有一个能解决这个问题。

最佳答案

哈,现在我也在用react-router和redux做一个项目=)。

查看redux集成的官方文档https://reacttraining.com/react-router/web/guides/redux-integration .

我认为要点是 withRouterconnect Hocs 的顺序。

The problem is that Redux implements shouldComponentUpdate and there’s no indication that anything has changed if it isn’t receiving props from the router. This is straightforward to fix. Find where you connect your component and wrap it in withRouter.

来自官方文档。

更新

import { withRouter } from 'react-router-dom';
import { connect } from 'react-redux';

class Home extends React.Component {...}

export default withRouter(
connect(mapStateToPropsFunc)(Home)
);

关于reactjs - React router v4 不支持 Redux,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45056150/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com