Skip to content

Question 1

Design a class-based React component called CourseCard that

  • Receives props such as course title (string), duration in weeks (number), and instructor name (string).
  • Use prop-types to validate that all props are required and of the correct type.

CourseCard.jsx

jsx
import React, { Component } from "react";
import PropTypes from "prop-types";

class CourseCard extends Component {
  render() {
    const { title, duration, instructor } = this.props;
	// Immediate destructuring to avoid using this.props
	
    return (
      <div className="course-card">
        <h2>{title}</h2>
        <p><strong>Duration:</strong> {duration} weeks</p>
        <p><strong>Instructor:</strong> {instructor}</p>
      </div>
    );
  }
}

// PropTypes validation
CourseCard.propTypes = {
  title: PropTypes.string.isRequired,
  duration: PropTypes.number.isRequired,
  instructor: PropTypes.string.isRequired,
};

export default CourseCard;

Functional Component

CourseCard.jsx

jsx
import React from "react";
import PropTypes from "prop-types";

function CourseCard({ title, duration, instructor }) {
  return (
    <div className="course-card">
      <h2>{title}</h2>
      <p><strong>Duration:</strong> {duration} weeks</p>
      <p><strong>Instructor:</strong> {instructor}</p>
    </div>
  );
}

CourseCard.propTypes = {
  title: PropTypes.string.isRequired,
  duration: PropTypes.number.isRequired,
  instructor: PropTypes.string.isRequired,
};

export default CourseCard;

App.jsx

jsx
import React from "react";
import CourseCard from "./CourseCard";

function App() {
  return (
    <div>
      <CourseCard
        title="React for Beginners"
        duration={6}
        instructor="John Doe"
      />
      <CourseCard
        title="Advanced JavaScript"
        duration={8}
        instructor="Jane Smith"
      />
    </div>
  );
}

export default App;

Made with ❤️ for students, by a fellow learner.