通过匹配浏览器 URL 和选项卡 URL 打开特定选项卡

ashfaqrafi

我有一个反应组件,其中有一个选项卡组件。这是组件:

import React from 'react';
import { RTabs, I18nText } from '@wtag/react-comp-lib';
import Profiles from './Profiles';
import Search from './Search';
import Booking from './Booking';

const pathName = window.location.href.split('/').reverse()[0];

const features = [
  {
    tabNum: 0,
    title: (
      <I18nText
        id="features.platform.profiles"
        className="platform-features__profiles-tab"
      />
    ),
    content: <Profiles />,
    url: '/en-US/p/features/applications/profiles',
  },
  {
    tabNum: 1,
    title: (
      <I18nText
        id="features.platform.search"
        className="platform-features__search-tab"
      />
    ),
    content: <Search />,
    url: '/en-US/p/features/applications/search',
  },
  {
    tabNum: 2,
    title: (
      <I18nText
        id="features.platform.booking"
        className="platform-features__booking-tab"
      />
    ),
    content: <Booking />,
    url: '/en-US/p/features/applications/booking',
  },
];

const getItems = () => {
  return features.map(({ tabNum, title, content, url }, index) => ({
    tabNum,
    key: index,
    title,
    content,
    url,
  }));
};

const PlatformFeatures = () => {
  return (
    <div className="platform-features__tabs">
      <RTabs isVertical={true} items={getItems()} selectedTabKey={2} />
    </div>
  );
};

export default PlatformFeatures;

在浏览器中加载组件时,默认情况下会选择并打开第一个选项卡。单击相应的选项卡时,该选项卡会打开。选定的选项selectedTabKey卡索引号可以传递给RTabs 组件的道具,并且该特定选项卡将被选择和打开。如此处所见,通过了索引 2,因此Booking默认情况下将选择并打开第三个选项卡 ie:。现在我想实现一个功能,即通过匹配它所在的当前 URL 来确定所选选项卡。就像 URL 包含booking在其中一样,在浏览器加载组件时将打开 Booking 选项卡。如果我将其中的 URL 提供booking给某人,并且如果他将该 URL 粘贴到浏览器中,它将起作用booking选项卡将被选中并打开,而不是默认的第一个选项卡。我想如果我可以编写一个函数来确定浏览器 URL 并将其与features数组中的 url 匹配,如果 url 匹配,它将从数组中获取匹配的选项卡索引并将其传递给selectedTabKey道具,然后它可能会打开根据浏览器 url 的位置动态选择选项卡。selectedTabKeyprops 将始终将 number 作为 PropType。我需要建议和代码示例来实现这些功能。

ashfaqrafi
const browserURL = document.location.pathname;
const filteredURL = features.map(({ url }) => url);

  const checkURL = (arr, val) => {
    return arr.filter(function(arrVal) {
      return val === arrVal;
    })[0];
  };

  const matchedURL = checkURL(filteredURL, browserURL);
  const getSelectedTabKey = filteredURL.indexOf(matchedURL);

然后传递getSelectedTabKeyselectedTabKey道具

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Javascript-通过单击一个按钮在新选项卡中打开给定URL

闪亮的保存URL状态子页面和选项卡

单击选项卡后,Angular Bootstrap选项卡更改URL

从Rails控制器的新选项卡中打开URL链接

使用Python获取所有打开的选项卡的URL

bootstrap-vue选项卡-在URL中给定锚的情况下打开选项卡内容

Swift-通过单击按钮打开特定选项卡

jQuery UI 1.12 –通过链接或URL激活选项卡

使用SSJS在新窗口/选项卡中打开URL

终端中打开的Firefox选项卡的输出URL

jQuery的停止选项卡更改URL

是否可以将URL从Google Chrome(或其他浏览器)窗口中所有打开的选项卡复制到电子邮件中?

jQuery UI选项卡,外部选项卡之间的链接仅转到选项卡一,而不管URL中的哪个选项卡锚

使用PHP / Ajax更改选项卡(和URL)

IMACRO的脚本打开2个带有特定URL的新选项卡

如何使用Selenium WebDriver在同一浏览器的另一个选项卡上打开URL?

强制URL在新选项卡中打开

Ubuntu中Chromium浏览器打开的选项卡的URL的位置

单击HTML按钮时,在新的浏览器选项卡中打开URL

从我的MVC控制器的URL在新选项卡中打开PDF [编辑]

无法在浏览器中打开新选项卡。它在同一个选项卡中加载第二个 url

使用javascript在IE浏览器的新选项卡中打开URL的最佳方法是什么?

用于获取从当前选项卡启动的选项卡 URL 的 JavaScript 书签代码

Url 在多个浏览器和多个选项卡中打开

如何单击 URL 的选项卡?

如何检查每个打开的标签的网址?以及如何对具有匹配 URL 的选项卡执行操作?”

如何使用 AppleScript 在当前 Safari 选项卡中打开特定 url?

如何使用 pyppeteer 异步获取 url(一个浏览器多个选项卡)

在新选项卡中打开所有外部 URL