'How I can show two nav.link while using a conditional operator?
My code:
<Nav>
{
user?.uid
?
<button onClick={() => handleSignout()}>Sign Out</button>
:
<Nav.Link as={Link} to='/login'>Login</Nav.Link>
<Nav.Link as={Link} to='/signup'>Sign Up</Nav.Link>
}
</Nav>
Solution 1:[1]
I think it should be like
{
user?.uid ? <button onClick={() => handleSignout()}>Sign Out </button> :
<React.Fragment>
<Nav.Link as={Link} to='/login'>Login</Nav.Link>
<Nav.Link as={Link} to='/signup'>Sign Up</Nav.Link>
</React.Fragment>
}
or instead of React.Fragment you can use empty tag like:
{
user?.uid ? <button onClick={() => handleSignout()}>Sign Out </button>:
<>
<Nav.Link as={Link} to='/login'>Login</Nav.Link>
<Nav.Link as={Link} to='/signup'>Sign Up</Nav.Link>
</>
}
Solution 2:[2]
Wrap them with a React fragment or any empty tag. and it should work fine.
{
user?.uid ? <button onClick={() => handleSignout()}>Sign Out :
<React.Fragment>
<Nav.Link as={Link} to='/login'>Login</Nav.Link>
<Nav.Link as={Link} to='/signup'>Sign Up</Nav.Link>
</React.Fragment>
}
Solution 3:[3]
{
user?.uid ?
<button>Sign Out</button>
:
<>
<Nav.Link>Login</Nav.Link>
<Nav.Link>Sign Up</Nav.Link>
</>
}
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 | Raouf Satto |
Solution 2 | Amr |
Solution 3 | c0dm1tu |