【问题标题】:React-Routing inside component from my own library我自己的库中的组件内部的 React-Routing
【发布时间】:2021-09-16 00:37:53
【问题描述】:

我创建了小型 ui 库,我想在某些组件中添加路由。例如,我们有类似

const SuperComponent = () => {
 return(
    <div>
      <nav>
        <ul>
          <li>
            <Link to="store/first">First</Link>
          </li>
          <li>
            <Link to="store/second">Second</Link>
          </li>
        </ul>
      </nav>
       <div>
        <Route path="store/first">
          <FirstPage />
        </Route>
        <Route path="store/second">
          <SecondPage />
        </Route>
      </div> 
    </div>
 )
}

后来我想像这样使用它

import SuperComponent from "react-super-component";
import { BrowserRouter as Router, Switch, Route } from "react-router-dom";

function App() {
  return (
    <Router>
      <Switch>
        <Route path="/store">
          <StoreApp />
        </Route>
      </Switch>
    </Router>
  );
}

export default App;

但现在我收到了不变的错误。有没有办法实现这样的逻辑?

【问题讨论】:

  • 尝试考虑在 SuperComponent() 中使用 Switch 包装您的 Route
  • @tengkuzulfadli 同样的错误

标签: reactjs npm react-router react-router-dom


【解决方案1】:

您在寻找组件路由吗?

import React from "react";
import { Route } from "react-router-dom";
import { connect } from "react-redux";
import PropTypes from "prop-types";

const ComponentRoute= ({ component: Component, auth, ...rest }) => (
  <Route
    {...rest}
    render={(props) =>
        <Component {...props} />
      )
    }
  />
);


const mapStateToProps = (state) => ({
});

export default connect(mapStateToProps)(ComponentRoute);

然后在你的 switch 中使用它:

<ComponentRoute path="/" component={component} />

【讨论】:

  • 仍然出现此错误 => 未捕获的错误:不变式失败
猜你喜欢
  • 1970-01-01
  • 2019-02-14
  • 1970-01-01
  • 1970-01-01
  • 2012-06-07
  • 2018-06-24
  • 2018-08-21
  • 1970-01-01
  • 2014-10-07
相关资源
最近更新 更多