Lesson 3 - RandomQuote App

Goal : Illustrate how to use useState by creating RandomQuote App

1. Set up a new React project

  1. Create the project: Run the following command in your terminal:

  2. Install Bootstrap: Install Bootstrap for styling:

    Import Bootstrap CSS in your index.js:


2. Structure the components

  • In src folder- App.jsx (Parent Component): Manages the state and passes props to RandomQuote.

  • In src/components folder - RandomQuote.jsx (Child Component): Displays the quote and handles button clicks.


3. Implement the components

App.jsx

  • Initializes state with a default quote.

  • Defines an array of quotes.

  • Creates a getRandomQuote function to generate a random index and update the quote state.

  • Renders the RandomQuote component, passing the quote and getRandomQuote function as props.

  • use two useState for updating the state of current quote and text color:

Key Points

  • The useState hook is used to manage the current quote.

  • Props (quote, color and onChangeQuote) are passed from the parent component to the child component.

  • The getRandomQuote prop is used to update the state in the parent component.

  • Bootstrap is used for basic styling (you can customize it further).


RandomQuote.jsx

  • Receives quote, color and onChangeQuote as props.

  • Displays the quote within a Bootstrap card.

  • Renders a button that, when clicked, triggers the onChangeQuote function passed from the parent component.


4. Test the App

  1. Start the development server:

  2. Open the browser and view your app. When you click the "Get New Quote" button, a random quote with a new background color will appear.


5. Optional Enhancements

  • Add animations: Use CSS or libraries like react-transition-group to add fade effects when changing quotes.

  • Persist state: Use localStorage to remember the last quote displayed.

  • API Integration: Replace the static array with an API call to fetch quotes dynamically.

This structure provides a reusable child component and showcases the flow of data between the parent and child using props and state.

Last updated