首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >连接-反应-路由器-您不应该使用<Route>以外的<Router>。

连接-反应-路由器-您不应该使用<Route>以外的<Router>。
EN

Stack Overflow用户
提问于 2019-01-09 17:56:00
回答 2查看 6.8K关注 0票数 13

以前也有人问过类似的问题,但这似乎是connected-react-router特有的。我可以使用Router或来自react-router(-dom)BrowserRouter,没有问题,但是我想要合并Redux,因此使用这个包。

App.js

代码语言:javascript
复制
import React, { Component } from "react";
import { Provider } from "react-redux";
import { ConnectedRouter } from "connected-react-router";
// import { Router, Route, Switch } from "react-router-dom";
import { Route, Switch } from "react-router";

// Routes
// import routes from "./js/routes";

// Components
import PimberlyLogin from "./js/containers/PimberlyLogin";
import CognitoLogin from "./js/containers/CognitoLogin";
import CognitoChangePassword from "./js/views/CognitoChangePassword";
import ListGroups from "./js/containers/ListGroups";
import VerificationCode from "./js/views/VerificationCode";

// Auth component
import { requireAuthentication } from "./js/components/AuthenticatedComponent";

// Styles
import "./css/app.css";

export default class App extends Component {
    constructor(props) {
        super(props);
    }

    render() {
        return (
            <Provider store={this.props.store}>
                <ConnectedRouter history={this.props.history}>
                    <Switch>
                        <Route
                          path="/"
                          component={PimberlyLogin}
                          exact={true}/>
                        <Route
                          path="/cognito/login"
                          component={CognitoLogin}
                          exact={true}/>
                        <Route
                          path="/cognito/changePassword"
                          component={CognitoChangePassword}
                          exact={true}/>
                        <Route
                          path="/groups"
                          component={requireAuthentication(ListGroups)}
                          exact={true}/>
                        <Route
                          path="/cognito/verificationCode"
                          component={VerificationCode}
                          exact={true}/>
                    </Switch>
                </ConnectedRouter>
            </Provider>
        );
    }
}

相对来说是直截了当的,类似于connected-react-router在NPM页面上作为示例所拥有的东西.

即使我查看他们的基本实例上的GitHub,也有类似的编码模式。

以下是我所犯的错误:

第二个错误似乎起源于我的高阶组件,因此这是代码:

PimberlyLogin.js

代码语言:javascript
复制
import { connect } from "react-redux";
import { withRouter } from "react-router-dom";
import { bindActionCreators } from "redux";

import PimberlyLoginComponent from "../views/PimberlyLogin";

import { setUsersPersist } from "../actions/user";
import { setGroupsPersist } from "../actions/group";

const mapStateToProps = (state, props) => {
    return {
        users: state.user,
        groups: state.group
    };
};

const mapDispatchToProps = (dispatch) => {
    return bindActionCreators({
        setUsersPersist: () => setUsersPersist(),
        setGroupsPersist: () => setGroupsPersist()
    });
};

export default withRouter(connect(
    mapStateToProps,
    mapDispatchToProps
)(PimberlyLoginComponent));

编辑

我到处玩着从不同的包中抓取<Switch><Route> (__react-router & react-router-dom__)。现在我正在做:

代码语言:javascript
复制
import { Switch, Route } from "react-router";

...and am getting:You should not use <Route> outside a <Router>.

如果我这样做了:

代码语言:javascript
复制
import { Switch } from "react-router-dom";
import { Route } from "react-router";

我明白了:You should not use <Switch> outside a <Router>.

这是来自<Route>react-router如何使用connected-react-router的一个潜在问题吗?

版本:

  • react-router @ v4.3.1
  • react-router-dom @ v4.4.0-beta
  • connected-react-router @ v6.0.0
  • react @ v16.5.2
EN

回答 2

Stack Overflow用户

发布于 2019-04-26 13:18:13

我认为这是因为您使用了两个版本的react-router (4.3.1用于核心路由器& 4.4.0-beta用于react-router-dom)。我也有同样的问题。我从我的项目中删除了react-router (因为它附带了react-router-dom),并使用了v4.3.1。从那以后一切似乎都很顺利。

所有这些都是基于这一反应connected-react-router的维护者。

票数 6
EN

Stack Overflow用户

发布于 2019-05-24 03:25:15

使用

代码语言:javascript
复制
"react-router": "^4.3.1"
"react-router-dom": "^4.3.1"
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54115843

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档