I'm writing a totally basic frontend in react bootstrap for my spring boot app. I have never written frontend in react, so I got a weird problem with that. I used a few tutorials from youtube which showed how to do it. I'm doing step by step and isn't working for me. I have Navbar, but when i chose any button context doesn't change on another. It should be dynamic, but currently I need to refresh the page to get another context. index.js
import React from 'react';
import ReactDOM from 'react-dom/client';
import './index.css';
import App from './containers/App';
import reportWebVitals from './reportWebVitals';
import bootstrap from 'bootstrap/dist/css/bootstrap.min.css';
import { BrowserRouter } from 'react-router-dom';
const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(
<React.StrictMode>
<App />
</React.StrictMode>
);
// If you want to start measuring performance in your app, pass a function
// to log results (for example: reportWebVitals(console.log))
// or send to an analytics endpoint.
reportWebVitals();
app.js
import './App.css';
import React, { Component } from 'react';
import { Button} from 'react-bootstrap';
import 'bootstrap/dist/css/bootstrap.min.css';
import NavbarMenu from '../components/NavbarMenu';
import Article from '../components/Article';
import Item from '../components/Item';
import ReactDOM from 'react-dom';
function App(){
return(
<div className='App'>
<header>
<NavbarMenu/>
{/* <h1>asd</h1> */}
</header>
{/* <main>
<Article/>
</main> */}
</div>
);
}
export default App;
import React from "react";
import { ReactDOM } from "react";
import { Component } from "react";
import { Navbar, Container, Nav, NavDropdown, Cards, Button } from "react-bootstrap";
import { BrowserRouter as Router, Route, Link, Switch, BrowserRouter } from 'react-router-dom'
import Item from "./Item";
import Login from "./Login";
function NavbarMenu(){
return(
<Router>
<div className="NavbarMenu">
<Navbar bg="dark" variant="dark" expand="lg" >
<Container>
<Navbar.Brand href="#home">Warehouse</Navbar.Brand>
<Navbar.Toggle aria-controls="basic-navbar-nav" />
<Navbar.Collapse id="basic-navbar-nav">
<Nav className="me-auto">
<Nav.Link as={Link} to="/home">Home</Nav.Link>
<Nav.Link as={Link} to="/item">Store</Nav.Link>
<Nav.Link >My Account</Nav.Link>
<Nav.Link as={Link} to="/login">Option 1</Nav.Link>
<Nav.Link >Option 2</Nav.Link>
<Nav.Link >Logout</Nav.Link>
<NavDropdown title="Dropdown" id="basic-nav-dropdown">
<NavDropdown.Item href="#action/3.1">Action</NavDropdown.Item>
<NavDropdown.Item href="#action/3.2">
Another action
</NavDropdown.Item>
<NavDropdown.Item href="#action/3.3">Something</NavDropdown.Item>
<NavDropdown.Divider />
<NavDropdown.Item href="#action/3.4">
Separated link
</NavDropdown.Item>
<NavDropdown.Item href="#action/3.4">
Logout
</NavDropdown.Item>
</NavDropdown>
</Nav>
<Button variant="light">Option 3</Button>
</Navbar.Collapse>
</Container>
</Navbar>
</div>
<div>
<Switch>
<Route path="/item">
<Item />
</Route>
<Route path="/login">
<Login />
</Route>
</Switch>
</div>
</Router>
);
}
export default NavbarMenu;
"version": "0.1.0",
"private": true,
"dependencies": {
"@popperjs/core": "^2.11.5",
"@testing-library/jest-dom": "^5.16.4",
"@testing-library/react": "^13.3.0",
"@testing-library/user-event": "^13.5.0",
"axios": "^0.27.2",
"bootstrap": "^5.2.0",
"react": "^18.0.0",
"react-bootstrap": "^2.4.0",
"react-cookie": "^4.1.1",
"react-dom": "^18.0.0",
"react-router": "^5.2.0",
"react-router-dom": "^5.3.0",
"react-scripts": "5.0.1",
"reactstrap": "^8.10.0",
"web-vitals": "^2.1.4"
},
"scripts": {
"start": "react-scripts start",
"build": "react-scripts build",
"test": "react-scripts test",
"eject": "react-scripts eject"
},
"eslintConfig": {
"extends": [
"react-app",
"react-app/jest"
]
},
"browserslist": {
"production": [
">0.2%",
"not dead",
"not op_mini all"
],
"development": [
"last 1 chrome version",
"last 1 firefox version",
"last 1 safari version"
],
"proxy": "http://localhost:8080/"
}
}
Anybody has a solution?