Итак, у меня есть NavBar, который я пытаюсь изменить, основываясь на определенных событиях, Navbar изменяется так, как он есть у меня сейчас, но я не хочу отображать его в каждом классе, который загружает новую страницу. Раньше у меня был рендеринг NavBar внутри моего приложения. js, так было на всех страницах, но потом я не мог понять, как передать значения для правильного изменения NavBar. Я бы предпочел не передавать одинаковые переменные каждому классу, который загружает новую страницу. Как я могу решить эту проблему?
Вот мой код NavBar
import React from 'react';
import '../App.css';
import { Link } from 'react-router-dom';
import PropTypes from 'prop-types';
export default function NavBar(props){
const logged = props.logged;
const baseTabs = props.baseTabs;
console.log('log' +logged )
console.log('base' + baseTabs)
return (
<nav>
<Link style={{color: 'white', textDecoration: 'none'}} to='/'>
<h3>Aura Flows</h3>
</Link>
<ul className='nav-links'>
{baseTabs && <Link style={{color: 'white', textDecoration: 'none'}} to='/faq'> <li>FAQ</li> </Link> }
{baseTabs && <Link style={{color: 'white', textDecoration: 'none'}} to='/pricing'> <li>Pricing</li> </Link> }
{!logged && <Link style={{color: 'white', textDecoration: 'none'}} to='/login'> <li>Login</li> </Link> }
{!logged && <Link style={{color: 'white', textDecoration: 'none'}} to='/signup'> <li>Sign Up</li> </Link> }
{logged && <Link style={{color: 'white', textDecoration: 'none'}} to='/logout'> <li>Logout</li> </Link> }
</ul>
</nav>
);
}
NavBar.propTypes = {
logged: PropTypes.bool.isRequired,
baseTabs: PropTypes.bool.isRequired
}
Один класс, который меняет Navbar на основе значений
import React, {Component, useState} from 'react';
import { Redirect } from 'react-router-dom';
import { Link } from 'react-router-dom';
import { auth } from "../Components/firebase";
import '../App.css';
import '../css/SignUp.css';
import NavBar from '../Components/NavBar';
function SignUpPage(){
const [logged, setLogged] = useState(false);
const [baseTabs, setBaseTabs] = useState(true);
const [username, setUsername] = useState('');
const [password, setPassword] = useState('');
const [confirmPassword, setConfirmPassword] = useState('');
const signup = event =>{
// Doesnt let fields be cleared allows viewing of json info in console
event.preventDefault();
console.log("Sign Up function");
console.log(username + password)
auth.createUserWithEmailAndPassword(username, password).then(cred => {
// console.log(cred.user)
})
setBaseTabs(true);
// sessionStorage.setItem('logged', true);
setLogged(true);
}
if(logged === true){
return (<Redirect to='/home'/>)
}
return (
<div>
<NavBar logged={logged} baseTabs={baseTabs}/>
<form className='signUpBox' id='signup-form'>
<h1>Sign Up</h1>
<input type='text' name='username' placeholder='Username' onChange={ e => {setUsername(e.target.value)}} required/>
<input type='password' name='password' placeholder='Password' onChange={ e => {setPassword(e.target.value)}} required/>
<input type='password' name='confirmPassword' placeholder='Confirm Password' onChange={ e => {setConfirmPassword(e.target.value)}} required/>
<input type='submit' name='' value='Sign Up' onClick={signup}/>
</form>
</div>
);
}