在react中工作,然后遇到了以下问题
Uncaught URIError: This is likely caused by an invalid percent-encoding
我目前正在使用新闻API,一些文章可能包括%。我的整个应用程序依赖于在url中显示新闻文章名称,因为我使用this.props.match.params.id我试着在网上搜索解决方案,但大多数人在解决这个确切问题时都非常不清楚。是否有简单的解决方法?
%
this.props.match.params.id
gjmwrych1#
您需要使用encodeURIComponent(),并将接收到的路径作为参数:示例:
encodeURIComponent()
const receivedArticleName = encodeURIComponent('Article Name with %');
由于您正在使用API,因此一旦收到它,请使用该receivedArticleName设置URL变量,然后就完成了。
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' } }) }
}重点是我合并的字符串函数也是路径名上的三元运算符。
lf3rwulv3#
因为我使用SSR
try { decodeURIComponent(req.path) } catch (error) { res.redirect(encodeURIComponent(req.path)) return }
解决了这个问题
3条答案
按热度按时间gjmwrych1#
您需要使用
encodeURIComponent()
,并将接收到的路径作为参数:示例:由于您正在使用API,因此一旦收到它,请使用该receivedArticleName设置URL变量,然后就完成了。
bnl4lu3b2#
这对我很管用。
重构前的代码:
}
重点是我合并的字符串函数也是路径名上的三元运算符。
lf3rwulv3#
因为我使用SSR
解决了这个问题