リアクタルータv4を使用してリザルトアプリケーションを開発しています。私のアプリにReduxを導入するまでは、すべてうまくいきました。それ以来、リンクをクリックしてルートを変更すると、ブラウザのURLは変更されますが、ルートに対応するコンポーネントはロードされません。 Reduxコードをコメントアウトするとうまくいきます。これを引き起こす原因は何ですか?ルーティング用のコードは次のとおりです。リダンダントルータv4が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です。私はさまざまなサイトで多くのスレッドを見てきましたが、どれもこの問題の解決策はありません。
'connect'はデフォルトで再レンダリング防止^^のために役立つことを願う私のデモです。それはあなたのルートが更新できない理由ですので、小道具の「浅い平等」を比較します。 –
私はどのような変更を行う必要がありますか? –
'connect'でラップされたルートはありますか?彼らがそうするなら、 'withRouter'でそれらをラップするべきです。私の答えを更新しました。 –