Lesson 3 - Create NavBar.jsx Component
Step 1. Create NavBar.jsx component inside src/components folder
/*NavBar.jsx -- before SearchBar component */
/** @format **/
function NavBar() {
return (
<>
<nav className="navbar bg-body-tertiary">
<div className="container-fluid">
<a className="navbar-brand" href="#">
<img
className=" col-md-3 "
src="../src/assets/react.svg"
alt="BookShelf Logo"
width="30"
height="24"
/>
Google Book Shelf
</a>
</div>
</nav>
</>
)
}
export default NavBarExplanation of NavBar.jsx Code Structure
NavBar.jsx Code StructureThe NavBar component is responsible for displaying the application header and providing a search bar to handle user queries. Here's a step-by-step breakdown of its functionality:
1. Importing Libraries
React: Core library for building the component.useState: Manages the state of the search input.PropTypes: Validates the props passed to the component.Bootstrap: Adds styling for the navbar and form elements.
2. Component Declaration
Props:
query: The current search term to initialize the input field.onSearch: A function to handle the search query submission and pass it back to the parent component.
3. Local State for Search Input
Purpose:
Tracks the user’s input in the search bar.
Initializes with the value of
queryreceived as a prop.
4. Handling Form Submission
Explanation:
Prevents the default form submission behavior (page reload).
Passes the sanitized input back to the parent component via the
onSearchprop.
5. Rendering the Navbar
Header Title:
Displays the app name (
Google Bookshelf) in the navbar.Styled using Bootstrap's dark theme (
navbar-dark bg-dark).
Search Form:
Input Field:
Pre-filled with the
querystate.Updates the local
searchInputstate on user input.
Search Button:
Submits the form and calls the
handleSubmitfunction.
Bootstrap Classes:
navbar: Styles the container as a navbar.d-flex ms-auto: Aligns the search form to the right.form-control: Styles the input field.btn btn-outline-light: Creates a light-outlined button for the search.
6. Prop Validation
Purpose:
Ensures
queryis a required string.Ensures
onSearchis a required function to handle search queries.
7. Exporting the Component
Purpose:
Makes the
NavBarcomponent reusable in the parent application.
Key Takeaways for Students:
State Management:
Learn how to handle local state (
searchInput) for form inputs.Pass values between child and parent components using props.
Form Handling:
Understand how to prevent the default form behavior (
e.preventDefault).Trigger actions using parent-defined callback functions (
onSearch).
Bootstrap Integration:
Utilize Bootstrap classes to style the navbar and search bar for a polished UI.
Prop Validation:
Use
PropTypesto validate props for better code reliability.
This component is now ready to integrate into AppBookShelf.jsx.
Last updated