条件渲染不显示-ReactJS

时间:2019-07-22 07:34:50

标签: javascript reactjs conditional-rendering

我有一个注销按钮,仅在用户登录时才显示。

我为此目的创建了一个函数,并将该函数包含在react的返回部分中,但是它不起作用。

这是功能:

const ifloggedin = () => {
    if (!localStorage.hasOwnProperty('token')) {
      return null
} else {
return <li><a href="#contact" className="Contact" onClick={logout} to={"/"}>Log Out</a></li>
}
  }

这是我尝试呈现的方式:

        <div className="content">
          <li><a href="#hiw" className="Hiw" to={"/about"}>HOW IT WORKS</a></li>
          <li><a href="#pricing" className="Price" to={"/pricing"}>PRICING</a></li>
          <li><Link className="Faq" to={"/Faq"}>FAQ</Link></li>
          <li><a href="#contact" className="Contact" to={"/contact"}>CONTACT</a></li>
          {ifloggedin}
        </div>

2 个答案:

答案 0 :(得分:8)

ifloggedin是一个函数,因此需要调用它。

 <div className="content">
          <li><a href="#hiw" className="Hiw" to={"/about"}>HOW IT WORKS</a></li>
          <li><a href="#pricing" className="Price" to={"/pricing"}>PRICING</a></li>
          <li><Link className="Faq" to={"/Faq"}>FAQ</Link></li>
          <li><a href="#contact" className="Contact" to={"/contact"}>CONTACT</a></li>
          {ifloggedin()}
</div>

答案 1 :(得分:2)

您必须将ifloggedin调用为ifloggedin(),因为它是一个箭头函数。 但是在您的情况下,您正在使用它进行条件渲染,因此无需为此编写箭头功能。

您可以将其编写为普通函数并用作ifloggedin()

 ifloggedin() {
if (!localStorage.hasOwnProperty('token')) {
  return null;
} else {
  return (
    <li>
      <a href="#contact" className="Contact" onClick={logout} to={'/'}>
        Log Out
      </a>
    </li>
  );
}