React Link 的空字符串是有效值吗?

IT技术 javascript reactjs react-router
2022-07-14 01:18:42

我正在编写一个React.js应用程序,我想在其中使用Linkreact-router 包中的组件,以便有条件地将用户重定向到另一个页面。如果某些条件不成立,我将toprop 设置为空字符串,该字符串有效且不会导致页面重新加载,并且页面保持在完全相同的位置。但我想知道这是否是最佳做法?

这是我的解决方案:

import { Link } from 'react-router';

<Link to={condition === true ? '/some/other/url' : ''}>
    <div>
        my content
    </div>
</Link>

我在文档中没有看到任何关于空字符串输入的内容。

3个回答

我从来没有在 HTML 或 React 中将任何东西与任何东西联系起来。也就是说,您似乎没有什么选择:

选项 1 有条件地呈现divnotto属性。如果 codition 为 true 则显示Linkdiv 如果不显示 div 则 no Link这可能是更“常见”的方式来做到这一点。如果您div不像“我的内容”那么简单,我会将其移至功能组件中。并使用该组件而不是<div>MyContent</div>如下所示。

import { Link } from 'react-router';

{ condition ? 
   (
     <Link to='/some/other/url'>
      <div>My Content</div>
     </Link>
   ) : ( <div>My Content</div> )
} 

选项 2 执行您所做的操作,但使用 the#而不是空字符串。

import { Link } from 'react-router';

<Link to={condition === true ? '/some/other/url' : '#'}>
    <div>
        my content
    </div>
</Link>

选项 3如果条件为假,则禁用链接。

import { Link } from 'react-router';

//a better name might be in order here
const handleLinkDisable = (e) => {
  const { condition }  = this.state; //just assuming it comes from state
  if(condition){ e.preventDefault(); }
}; 

<Link to='/some/other/url' onClick={handleLinkDisable}>
  <div>My Content</div>
</Link> 

希望有帮助。

toLink. 如果 url 为空,最好隐藏整个组件:

   {
      condition && (
        <Link to={"/some/other/url"}>
          <div>my content</div>
        </Link>
      );
    }

如果由于某些奇怪的原因您需要空 url,您可以传递一个空格:

<Link to={condition === true ? '/some/other/url' : ' '}> // Whitespace here
    <div>
        my content
    </div>
</Link>

使用“javascript.void(0)”而不是使用空字符串。

从'react-router'导入{Link};

我的内容

请参阅文档“javascript:void(0)”是什么意思?