【问题标题】:ReactJS: Link to go to next page dynamicallyReactJS:动态链接到下一页
【发布时间】:2017-09-18 20:10:38
【问题描述】:

我有一个包含路由的 App.jsx,我有一个组件 NextPage.jsx,它是一个应该指向下一页的简单链接。我的问题是:如何告诉 NextPage 组件中的链接指向下一页?所以如果我在主页中,链接应该让我去投资组合,如果在投资组合上,我应该能够去技能等等。

这是我的 App.jsx

const App = () => (
  <div className="main-container">
    <Menu/>
    <NextPage/>
    <AnimatedSwitch
      atEnter={{ offset: 100}}
      atLeave={{ offset: -100}}
      atActive={{offset: 0}}
      mapStyles={(style) => ({
        transform: `translateX(${style.offset}%)`,
      })}
    >
      <Route exact path="/" component={Homepage} />
      <Route path="/portfolio" component={Portfolio} />
      <Route path="/skills" component={Skills} />
      <Route path="/contacts" component={Contacts} />
      <Route path='*' component={NotFound} />
    </AnimatedSwitch>
  </div>  
);

export default App;

这是我的 NextPage.jsx

const NextPage = () => (
        <div className="next-arrow">
          <Link to='#HEREGOESTHENEXTPAGELINK#'><i className="fa fa-angle-right" aria-hidden="true"></i></Link>
        </div>
    );

export default NextPage;

【问题讨论】:

  • 不确定你的意思。您只需要NextPage 中的链接,将您带到Skills?如果是这样,只需将您的链接编辑为:&lt;Link to ='/skills'&gt;...
  • 不,NextPage 中的链接必须将您发送到下一页,因此例如,如果我在主页中,则链接应将我发送到 Portfolio,如果我在 Portfolio 页面中,则链接应将我发送到技能等

标签: javascript reactjs


【解决方案1】:

在我看来,您实现这一点的方法似乎有点奇怪,但我离题了。

您需要做的第一件事是以某种方式存储所有链接以及它们的出现顺序。我要说的最大问题是在哪里你要存储它;您可以将其存储在数据库中、创建全局变量、将其存储在舞台管理库中(如果您使用的话)等等。

目前还不清楚您使用哪一个以及您更喜欢哪一个,所以我将把它留给您,并在下面介绍一下这个概念。


在你的根 React 组件中定义一个包含所有链接的数组。您可以在构造函数中执行此操作:

class MyApp extends React.Component {
  constructor() {
    super();
    window.links = ["/", "/portfolio", "/skills", "/contacts"];
  }

  render() ...
}

这将使window.links 在所有组件中都可以访问。这意味着您比较活动 url,在数组中查找它,然后让链接将您定向到下一个。

const NextPage = (props) => {
  let idx = window.links.indexOf(props.route.path) + 1;
  let link = (idx == window.links.length) ? window.links[0] : window.links[idx];
  return (
    <div className="next-arrow">
      <Link to={link}><i className="fa fa-angle-right" aria-hidden="true"></i></Link>
    </div>
  );
}

export default NextPage;

请注意,如果当前链接不是window.links 中定义的链接之一,该链接会将您带到第一个。

【讨论】:

  • 谢谢你的回答,你说这看起来很奇怪,我实际上是在试图找到最好的方法或更实用的方法来做一个简单的链接到下一页写作只是一个简单的组件,而不是为每个页面呈现一个链接。所以我完全愿意接受关于如何以最好的方式做到这一点的建议:)
  • @Moae84,如果不完全了解您要做什么,就很难给出任何可靠的建议。但是请查找 react-router 的“子路由”。这可能是更合适的解决方案。
  • 如果这解决了您的问题,请考虑将其标记为“已接受”和/或投票。
  • 有没有办法将 props 发送到 NextPage 组件?如果我设置类似 '
  • 我对你的解决方案有一点问题,在这一行` let idx = window.links.indexOf(this.props.route.path) + 1;` 控制台向我显示一个未捕获的类型错误:无法读取 udnefined 的属性“道具”
猜你喜欢
  • 2019-08-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-12
  • 1970-01-01
  • 2011-12-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多