根据对象中的值动态更改反应应用程序中的 URL

缺口

如果参数与对象中的值相同,我正在尝试用对象的值替换 url 的参数。

我已经得到它,以便它替换值,但它只是创建一个包含 2 个项目的数组,我希望基本上将它们“合并”在一起以创建一个 URL。

任何帮助深表感谢!

whereurlData由正在传入的类似内容组成:

[
    {
        param: ':userId',
        value: userId || '',
    },
    { param: ':messageId', value: messageId || '' }
]

我的菜单如下所示:

{menu?.map((menuItem, index) => {
    const { title, path } = menuItem
    const finalPath = urlData?.map(
        (url, index) =>
            path.includes(url?.param)
                ? path.replace(
                    url?.param,
                    url?.value
                  )
                : path
        )

    console.log('final', finalPath)

    return (
        <Link
            to={finalPath}
            key={index}
            className={
                pathname === finalPath ||
                finalPath.includes(pathname)
                    ? 'active'
                    : ''
            }
        >
            {title}
        </Link>
    )
})}

我目前的回应:

[
    "/app/messages/be493d77/:messageId",
    "/app/messages/:userId/2cd4df7d"
]

我在寻找什么:

    "/app/messages/be493d77/2cd4df7d"
德鲁里斯

不是映射urlData导致数组长度相等的数组,而是对数组进行归约。

例子:

const userId = "be493d77";
const messageId = "2cd4df7d";

const path = "/app/messages/:userId/:messageId";

const urlData = [
  { param: ":userId", value: userId || "" },
  { param: ":messageId", value: messageId || "" }
];

const finalPath = urlData.reduce(
  (path, { param, value }) => path.replace(param, value),
  path
);

console.log(finalPath);

或者,您可以generatePath使用react-router-dom. 这要求urlData param值匹配参数名称而不是路径的字符串文字。

例子:

import { generatePath } from "react-router-dom";

const urlData = [
  { param: "userId", value: userId || "" },
  { param: "messageId", value: messageId || "" }
];

const finalPath = generatePath(
  path,
  urlData.reduce(
    (params, { param, value }) => ({
      ...params,
      [param]: value
    }),
    {}
  )
);

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何根据环境更改Meanapp或Nodejs应用程序中的基本URL?

根据整个 URL 更改应用程序行为

从 S3 和 CloudFront 上的 URL 反应应用程序中删除 index.html

如何将 Django 中应用程序的 url 更改为自定义 url

更改应用程序显示名称是否会更改其在商店中的 URL?

在ZF2应用程序中更改当前URL中的语言环境参数

根据UICollectionView中url的json响应从应用程序内添加图像

某些Web应用程序中的URL(短URL)

获取动态应用程序 URL

为什么我在React应用程序中的Fetch URL不会更改?

Laravel:在排队通知中调用的路由中更改应用程序URL

如何通过url发送对象列表并在spring应用程序中解析

更改Laravel应用程序的基本URL

在反应中,URL被更改,但视图未更改

使用eck.gl和nebula.gl的特定geojson URL在我的反应应用程序中不起作用

在Azure逻辑应用程序中,如何获取url编码数据的键和值

根据通知 IOS swift 更改 webview 应用程序内的 url

在单页应用程序中创建临时URL

获取Java中应用程序的基本URL

在Yii应用程序中显示的受保护的URL格式

Web应用程序中的.jspa URL扩展是什么?

如何在 rails 应用程序中获取主机 url

Rails应用程序中的自定义URL

计划作业中的Spring应用程序URL

r Shiny应用程序中的URL缩短器

如何在 django 应用程序中创建分层 url?

如何使用网页中的 URL 链接启动应用程序?

如何从 Android 应用程序在 Blackberry Access 中打开 url

已打开的应用程序中的URL方案