javascript - ReactJS:链接动态转到下一页

标签 javascript reactjs

我有一个具有路由的 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;

最佳答案

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

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

目前尚不清楚您使用其中哪一个以及您更喜欢哪一个,因此我将其留给您并仅在下面介绍概念。

<小时/>

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

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

  render() ...
}

这将使 window.links 在所有组件中均可访问。这意味着您可以比较事件网址,在数组中查找它,然后通过链接将您定向到下一个网址。

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 中定义的链接之一,则该链接会将您带到第一个链接。

关于javascript - ReactJS:链接动态转到下一页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46276904/

相关文章:

对象中未填充 Javascript 键

javascript - 是否通过 Javascript 或 jQuery 隐藏内容 值得一试

javascript - 在 react 中显示两个日期

javascript - 使用 Google map 距离矩阵 API 获取两个地址之间的行程时间

javascript - EventEmitter 与 facebook 的调度程序

javascript - 如果一个 div 包含特定的文本字符串,编辑父级的 css

javascript - 为什么我的 Vue 项目中的 promise.finally 不能在 Edge 中运行?

javascript - 表不再更新到 firebase、React

javascript - 怎样对付邪恶呢?在 System.Shell.execute() 之前验证用户输入;

javascript - 复选框在 React JS 中保持跨组件的状态