reactjs React抛出URIError:这可能是由无效的百分比编码引起的

tzdcorbm  于 2023-03-29  发布在  React
关注(0)|答案(3)|浏览(143)

在react中工作,然后遇到了以下问题

Uncaught URIError: This is likely caused by an invalid percent-encoding

我目前正在使用新闻API,一些文章可能包括%。我的整个应用程序依赖于在url中显示新闻文章名称,因为我使用this.props.match.params.id
我试着在网上搜索解决方案,但大多数人在解决这个确切问题时都非常不清楚。
是否有简单的解决方法?

gjmwrych

gjmwrych1#

您需要使用encodeURIComponent(),并将接收到的路径作为参数:示例:

const receivedArticleName = encodeURIComponent('Article Name with %');

由于您正在使用API,因此一旦收到它,请使用该receivedArticleName设置URL变量,然后就完成了。

bnl4lu3b

bnl4lu3b2#

这对我很管用。

function navigate(data: Partial<Saturation>) {
    if (data.name) {
      const checkSyrupForPercentChar = data.name.includes('%')
      const syrupReplacementName = data.name.replace('%', '')

      history.push({
        pathname: `saturation-directory/${data.id}/${urlFormat(
          checkSyrupForPercentChar ? syrupReplacementName : data.name
        )}`,
        state: {
          syrupData: data,
          from: 'syrupDirectory'
        }
      })
    }
  }

重构前的代码:

function navigate(data: Partial<Saturation>) {
if (data.name) {
  history.push({
    pathname: `saturation-directory/${data.id}/${urlFormat(data.name)}`,
    state: {
      syrupData: data,
      from: 'syrupDirectory'
    }
  })
}

}
重点是我合并的字符串函数也是路径名上的三元运算符。

lf3rwulv

lf3rwulv3#

因为我使用SSR

try {
    decodeURIComponent(req.path)
  } catch (error) {
    res.redirect(encodeURIComponent(req.path))
    return
  }

解决了这个问题

相关问题