📖 Scenario: You are building a simple website header with navigation links. These links let users move between pages like Home, About, and Contact.
🎯 Goal: Create a React functional component that displays a navigation bar with three links: Home, About, and Contact. Each link should be a clickable anchor tag.
📋 What You'll Learn
Create a React functional component named NavBar.
Use a nav HTML element to wrap the links.
Add three anchor tags with href attributes: "/home", "/about", and "/contact".
Each anchor tag should have the link text exactly: Home, About, and Contact.
Use semantic HTML and ensure the component is accessible.
💡 Why This Matters
🌍 Real World
Navigation bars are essential for websites to help users move between pages easily.
💼 Career
Understanding how to build accessible navigation components is a key skill for frontend developers.
Progress0 / 4 steps
1
Create the NavBar component skeleton
Create a React functional component named NavBar that returns an empty nav element.
React
Hint
Start by writing a function named NavBar that returns a nav element.
2
Add anchor tags for navigation links
Inside the nav element, add three anchor tags with href attributes: "/home", "/about", and "/contact". The link texts should be Home, About, and Contact respectively.
React
Hint
Use three <a> tags inside <nav> with the exact href and text.
3
Add a class name for styling
Add a className attribute with the value "nav-links" to the nav element to prepare for styling.
React
Hint
Add className="nav-links" inside the opening <nav> tag.
4
Export the NavBar component
Add an export statement to export the NavBar component as the default export.
React
Hint
Write export default NavBar; after the component function.
Practice
(1/5)
1. What is the main purpose of using Link from react-router-dom in a React app?
easy
A. To create navigation links that change pages without reloading the browser
B. To style buttons with CSS
C. To fetch data from an API
D. To manage component state
Solution
Step 1: Understand the role of Link
Link is used to navigate between pages in a React app without refreshing the whole page.
Step 2: Compare with other options
Options A, C, and D describe unrelated tasks like styling, data fetching, and state management, which Link does not handle.
Final Answer:
To create navigation links that change pages without reloading the browser -> Option A
Quick Check:
Navigation without reload = B [OK]
Hint: Remember: <Link> changes pages without full reload [OK]
Common Mistakes:
Confusing <Link> with HTML <a> tag behavior
Thinking <Link> manages data or state
Assuming <Link> reloads the page
2. Which of the following is the correct syntax to create a navigation link to '/about' using react-router-dom?
The Link component uses the to attribute to specify the path.
Step 2: Differentiate from HTML anchor tag
HTML a tags use href, but Link requires to. About uses correct syntax.
Final Answer:
<Link to='/about'>About</Link> -> Option C
Quick Check:
Link uses to attribute [OK]
Hint: Use 'to' with <Link>, 'href' with <a> [OK]
Common Mistakes:
Using href instead of to with <Link>
Using to attribute on <a> tag
Mixing <Link> and <a> syntax
3. Given this React code snippet, what will be rendered on the page?
import { Link } from 'react-router-dom';
function Nav() {
return (
<nav>
<Link to='/'>Home</Link>
<Link to='/profile'>Profile</Link>
</nav>
);
}
medium
A. An error because <Link> cannot be used inside <nav>
B. Two clickable links labeled 'Home' and 'Profile' that navigate without page reload
C. Buttons that submit a form
D. Plain text 'Home' and 'Profile' with no navigation
Solution
Step 1: Analyze the JSX structure
The component returns a <nav> element containing two <Link> components with paths '/' and '/profile'.
Step 2: Understand Link behavior
Link renders as clickable links that navigate client-side without reloading the page.
Final Answer:
Two clickable links labeled 'Home' and 'Profile' that navigate without page reload -> Option B
Quick Check:
Links inside nav render clickable navigation [OK]
Hint: Links inside nav create clickable navigation [OK]
Common Mistakes:
Thinking <Link> renders plain text
Assuming <Link> causes page reload
Believing <Link> cannot be inside <nav>
4. What is wrong with this React navigation code?
import { Link } from 'react-router-dom';
function Menu() {
return (
<nav>
<Link href='/dashboard'>Dashboard</Link>
</nav>
);
}
medium
A. No import statement for React
B. Missing closing tag for <nav>
C. Link component cannot be used inside <nav>
D. Using 'href' instead of 'to' on <Link> causes navigation failure
Solution
Step 1: Check attribute usage on Link
The Link component requires the to attribute, not href.
Step 2: Verify other code parts
The <nav> tag is properly closed, and Link can be inside nav. React import is not mandatory in React 17+ for JSX.
Final Answer:
Using 'href' instead of 'to' on <Link> causes navigation failure -> Option D
Quick Check:
Link needs 'to', not 'href' [OK]
Hint: Use 'to' with <Link>, not 'href' [OK]
Common Mistakes:
Using href attribute on <Link>
Thinking <Link> can't be inside <nav>
Assuming React import is always required
5. You want to create a navigation menu with links that have accessible names and keyboard focus. Which approach is best in React using react-router-dom?
hard
A. Use <nav> with <Link> components, add aria-label on nav, and ensure links have descriptive text
B. Use <div> with <Link> components and no ARIA labels
C. Use <nav> with <a> tags and href attributes for navigation
D. Use buttons with onClick handlers instead of links for navigation
Solution
Step 1: Choose semantic HTML for navigation
The <nav> element is the correct semantic container for navigation links, improving accessibility.
Step 2: Use Link with descriptive text and ARIA labels
Link components from react-router-dom provide client-side navigation. Adding aria-label on nav helps screen readers understand the menu purpose.
Step 3: Avoid incorrect elements
Using div or buttons for navigation is less semantic and harms accessibility. Using a tags with href reloads pages, not client-side navigation.
Final Answer:
Use <nav> with <Link> components, add aria-label on nav, and ensure links have descriptive text -> Option A
Quick Check:
Semantic nav + Link + ARIA = A [OK]
Hint: Use semantic nav + Link + aria-label for accessible navigation [OK]
Common Mistakes:
Using div instead of nav for navigation
Skipping aria-label for screen readers
Using buttons instead of links for navigation
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.