You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在ReactJs的menu.js功能组件中根据时间戳切换路由

React 功能组件按时间戳动态切换路由链接实现方案

核心实现逻辑

你已经在App.js中完成了两个路由的注册,只需要在Menu功能组件中添加日期判断逻辑即可,完整的Menu.js代码示例如下:

import { Link } from 'react-router-dom';

const Menu = () => {
  // 配置目标切换日期:注意JS中月份从0开始计数,11代表12月
  // 如果需要固定某一年的12月1日,写法为 new Date(2024, 11, 1)
  // 如果需要每年12月1日自动切换,用以下动态写法
  const currentYear = new Date().getFullYear();
  const switchDate = new Date(currentYear, 11, 1);
  const now = new Date();
  // 判断是否已到切换时间
  const shouldShowStore = now >= switchDate;

  return (
    <nav>
      {/* 其他菜单内容 */}
      {shouldShowStore ? (
        <Link to="/store">Store</Link>
      ) : (
        <Link to="/coming-soon">Coming Soon</Link>
      )}
      {/* 其他菜单内容 */}
    </nav>
  );
};

export default Menu;

可选优化:防止未到时间直接访问/store路由

如果需要避免用户手动输入/store地址提前访问页面,可以修改App.js中的路由配置,添加重定向逻辑:

import { Switch, Route, Redirect } from 'react-router-dom';

// ...其他代码

return (
  <>
    <Menu />

    <Switch>
      <Route path="/" exact>
        <LandingPage />
      </Route>
      <Route path="/coming-soon" exact>
        <ComingSoon />
      </Route>
      <Route path="/store" exact>
        {/* 此处日期判断逻辑和Menu组件保持一致即可 */}
        {new Date() >= new Date(new Date().getFullYear(), 11, 1) ? (
          <Store />
        ) : (
          <Redirect to="/coming-soon" />
        )}
      </Route>
    </Switch>

    <Footer />
    </>
);

注意:以上判断基于用户本地时间,如果需要更高的准确性,可以从后端接口获取服务器时间做判断,避免用户修改本地时间绕过限制。

内容的提问来源于stack exchange,提问作者Joe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 15:36:03