Javascript 如果不存在http或https,react中的外部链接将附加localhost

Javascript 如果不存在http或https,react中的外部链接将附加localhost,javascript,reactjs,create-react-app,Javascript,Reactjs,Create React App,我现在正在使用此代码从生成的URL打开外部链接: 如果不存在http或https,react中的外部链接将附加localhost <a href={url} target={'_blank'} rel="noopener noreferrer external"> {url} </a> 如果url中存在http或https,则工作正常,但如果没有,则会重定向到http://localhost:3000/${url} 是否有

我现在正在使用此代码从生成的URL打开外部链接:

如果不存在http或https,react中的外部链接将附加localhost

  <a href={url} target={'_blank'} rel="noopener noreferrer external">
        {url}
  </a>

如果url中存在http或https,则工作正常,但如果没有,则会重定向到
http://localhost:3000/${url}


是否有办法在React(创建React应用程序)中忽略此设置添加此条件如果url为空,则不会重定向

{url && <a href={url} target={'_blank'} rel="noopener noreferrer external">
    {url}</a>}
{url&&}

这与react完全无关,这取决于浏览器如何理解URL。 URL有4种类型:

http://yourdomain.com/images/example.png
:(这对您来说很好,因为它是一个绝对url,浏览器将按原样打开它)

//yourdomain.com/images/example.png
(这也与上一个相同,对您来说很好,除了这里的scheema是相对于当前主机的,如果您的网站是https,它将打开https,否则它将打开http)

您对以下两个URL有问题,这是因为它们与当前主机相关,在您的情况下,您的网站似乎处于
http://localhost:3000

/images/example.png
(相对于文档根)

images/example.png
(相对于路径)

现在,如果您想将相对URL转换为相对于另一个主机,请使用如下

const baseOfAnotherHost = 'https://someotherdomain.com'
// can also work with relative urls like 'doc/sign/' or '/doc/sign'
const relativeOrAbsoluteURL = 'https://www.someotherdomain.com/doc'
const absoulteUrl = new URL(relativeOrAbsoluteURL,baseOfAnotherHost).href
<a href={absoulteUrl} target={'_blank'} rel="noopener noreferrer external">
    {absoulteUrl}</a>
const baseofotherhost='1https://someotherdomain.com'
//也可以使用相对URL,如“doc/sign/”或“/doc/sign”
常数相对论https://www.someotherdomain.com/doc'
const AbsoluteUrl=新URL(relativeOrAbsoluteURL,BaseOfOfOtherHost)。href

此代码根据
url
是否为
null
有条件地呈现链接。这是如何回答OP的问题的?请阅读此->如果url中存在http或https,它工作正常,但如果没有,它将被重定向到{url}。这句话没有说
url
可以为空。对于字符串中没有http或https的url,OP似乎希望将http或https添加到url时具有相同的外部链接行为。