我正在通过以下方式定义React项目的路由,使URL看起来像http://something.com/en-us/home或http://something.com/fr-ca/home:
<Route path="/:language/home" render={() => <Home/>}/>
在计划路径变量“:language”不是真正的语言(即将http://something.com/xyz/home重定向到http://something.com/en-us/home)的情况下,我最初在{中调用了方法setDefaultLanguage
{1}},旨在使用浏览器的语言代码刷新页面。取而代之的是,此方法在每次装入页面时都会刷新页面。
componentDidMount
如果浏览器的语言代码不存在(根本不存在或在允许的语言列表中),我如何正确处理对用户浏览器语言(如果我们的列表支持)或{{1} }?
答案 0 :(得分:0)
您的checkLangInMasterList
返回的布尔值不是-1。
您的代码应如下所示:
if (!checkLangInMasterList(pathnames[1])) {
// do stuff here
}
此外,如果path变量等于浏览器语言,则应停止重定向。
因此,根据您想要的逻辑,这里是它的样子:
if (checkLangInMasterList(pathnames[1]) {
return
}
if (checkLangInMasterList(browserLanguage) {
window.location = `/${browserLanguage}/${pathnames[2]}`
} else {
window.location = `/${en-us}/${pathnames[2]}`
}