在应用内使用React Router路由到另一个页面

问题描述 投票:0回答:3
let Channel = ({ channelName, channelString, onClick, active }) => (
  <div onClick={onClick} className=" col-lg-2 col-md-4 col-sm-6 ">
    <div>router</div>

    <Router>
      <Link to={"/here"}> here</Link>
      <Switch>
        <Route path="/auth" />
        <Route path="/" />
      </Switch>
    </Router>
    <div
      className="channel-button"
      style={{
        backgroundColor: active === channelString ? "orange" : ""
      }}
    >
      <p>{channelName}</p>
    </div>
  </div>
);
javascript html reactjs redux router
3个回答
0
投票

exact用作家庭路线的属性,如以下代码。

<Router>
  <Link to={"/here"}> here</Link>
  <Switch>
    <Route exact path="/" />
    <Route path="/auth" />
  </Switch>
</Router>

0
投票
import Stats from './containers/stats';
<Route
   exact={true}
   path="/"
   component={Stats}
   key="Mykey"
 />

0
投票

我检查了您的沙箱。看起来是个不错的开始,但是您搞砸了一些事情。

这是我的沙箱分叉:https://codesandbox.io/embed/staging-fast-rr5k9

首先,不要将React组件放入容器中,将它们放入components文件夹中并导入它们。

发生的事情是,您拥有的每一页都有全新的<Router>。所以我把路由器拔了出来。它也不能正确导入。应该是

import { BrowserRouter as Router } from "react-router-dom";

所以您几乎需要这样的东西

      <div>
        <Link to={"/bbc-news"}>BBC</Link>
      </div>
      <div>
        <Link to={"/cnbc"}>CNBC</Link>
      </div>

      <Switch>
        <Route
          key={"fbbc-news"}
          path="/bbc-news"
          render={p => <Channel channelName="BBC" channelString="bbc-news" />}
        />
        <Route
          key={"cnbc"}
          path="/cnbc"
          render={p => <Channel channelName="CNBC" channelString="cnbc" />}
        />
      </Switch>
    </Router>

通道组件在哪里渲染通道内部内容。 Route中的key很重要,因为它可以使React正确触发componentDidMount,该组件调用要获取的thunk动作(这是完美的)。然后访问取自您放置在Redux =>

中的结果。
const mapStateToProps = state => ({ json: state.json });

您不需要拥有很多东西,因此我将它们删除了,例如试图执行路由器工作的onClick,>

© www.soinside.com 2019 - 2024. All rights reserved.