Lesson 3 - Create NavBar.jsx Component
Step 1. Create NavBar.jsx component inside src/components folder
Explanation 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
query
received 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
onSearch
prop.
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
query
state.Updates the local
searchInput
state on user input.
Search Button:
Submits the form and calls the
handleSubmit
function.
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
query
is a required string.Ensures
onSearch
is a required function to handle search queries.
7. Exporting the Component
Purpose:
Makes the
NavBar
component 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
PropTypes
to validate props for better code reliability.
This component is now ready to integrate into AppBookShelf.jsx
.
Last updated