projects,

React Mcqexample

Manjunath Manjunath Follow Jul 20, 2022 · 2 mins read
React Mcqexample
Share this

Building MCQ react simple app with sample code

In this article I am going to build a sample application to build react MCQ example. Demo

import React from 'react';
import './style.css';
import {
  AddQuestion,
  DisplayQuestion,
  AnswerContainer,
} from './components/index';
import { sampleData } from './data/sampleData';
export default function App() {
  return (
    <>
      <div style=>
        <div className="question-container">
          <DisplayQuestion questions={sampleData} />
        </div>
        <AnswerContainer />
      </div>
    </>
  );
}

styles.css

.question-item {
  flex: 1;
  margin-bottom: 20px;
}
.question-container {
  /* display: flex; */
  width: 100%;
  /* flex-direction: row; */
  padding: 20px;
  height: 100%;
}
.answer-container {
  width: 50%;
}
.answer-container textarea {
  padding: 20px;
  width: 100%;
  height: 100%;
}


sampleData.js

export const sampleData = [
  {
    id: 1,
    text: 'Question 1',
    type: 'MCQ',
    answers: ['a', 'b', 'c', 'd'],
    samples: ['a-z', 'b-z'],
    currectAnswer: 'a',
  },
  {
    id: 2,
    text: 'Question 2',
    type: 'MCQ',
    answers: ['a', 'b', 'c', 'd'],
    samples: ['a-z', 'b-z'],
    currectAnswer: 'a',
  },
  {
    id: 3,
    text: 'Question 3',
    type: 'MCQ',
    answers: ['a', 'b', 'c', 'd'],
    samples: ['a-z', 'z-a'],
    currectAnswer: 'a',
  },
  {
    id: 4,
    text: 'Question 4',
    type: 'MCQ',
    answers: ['a', 'b', 'c', 'd'],
    samples: ['a-z', 'z-a'],
    currectAnswer: 'a',
  },
];
AddQuestion.js
import React from 'react';
export default function AddQuestion() {
  return (
    <>
      <h1>Add Question</h1>
      <label>Problem Statement</label>
      <textarea></textarea>
      <label>Expected Answer</label>
      <textarea></textarea>
    </>
  );
}
AnswerContainer.js
import React from 'react';
export default function AnswerContainer() {
  return (
    <div className="answer-container">
      <textarea></textarea>
    </div>
  );
}
DisplayQuestion.js
import React, { useState, useEffect } from 'react';
export default function DisplayQuestion({ questions }) {
  // console.log(questions);
  const [records, setRecord] = useState();
  const [mcqAnswer, setMcqAnswer] = useState();
  useEffect(() => {
    var itemRandom = questions[Math.floor(Math.random() * questions.length)];
    // console.log(itemRandom);
    setRecord(itemRandom);
  }, [questions]);
  function changeValue(e) {
    // console.log(e.target.value);
    setMcqAnswer(e.target.value);
    validateAns(e.target.value, records);
  }
  function validateAns(enteredValue, records) {
    // console.log(enteredValue);
    if (enteredValue == records.currectAnswer) {
      // console.log(enteredValue);
      console.log('correct answer');
    } else {
      console.log('wrong answer');
    }
  }

  const QuestItem = ({ question }) => {
    // console.log(question);
    return (
      <div className="question-item">
        <div>Type:{question.type}</div>
        <div>Question:{question.text}</div>
        <div>
          Answers:
          {question.answers &&
            question.answers.map((item) => {
              // console.log(item);
              return (
                <div key={item.id} style=>
                  <input
                    type="radio"
                    name="answer"
                    value={item}
                    onChange={(e) => changeValue(e)}
                  ></input>
                  <label>{item}</label>
                </div>
              );
            })}
        </div>
        <div>Samples Input:{question.samples}</div>
        {mcqAnswer ? <div>Selected Answer:{mcqAnswer}</div> : null}
      </div>
    );
  };
  return (
    <>
      {/* <label>Problem Statement</label> */}
      {records ? <QuestItem question={records} /> : <div>Loading...</div>}
    </>
  );
}
index.js
import AddQuestion from './AddQuestion';
import DisplayQuestion from './DisplayQuestion';
import AnswerContainer from './AnswerContainer';
export { AddQuestion, DisplayQuestion, AnswerContainer };


Join Newsletter
Get the latest news right in your inbox. We never spam!
Manjunath
Written by Manjunath Follow
Hi, I am Manjunath, the author of this website,I hope you like it! you can reach me out for any website development or startup strategy consultation.Right now I'm doing consulting for various companies. I love teaching people about code, and building my own products. I use .js mainly, and I really love React, React Native, and Node.js.I'm using AWS and Vercel to deploy my products.I'm also writing a blog at my own website.I'm always available on Twitter, send me a message there too!