0.1.8 • Published 2 years ago

react-quiz-stepper v0.1.8

Weekly downloads
-
License
MIT
Repository
github
Last release
2 years ago

react-quiz-stepper is a react component that gives handy access to quiz data combined with stepper. Behind the scenes it uses context api, so data can be accessed at any level in component tree. Most basic hooks are useQuiz and useStepper.

Install

npm i react-quiz-stepper

Features

Quick Start

Wrap your app inside QuizProvider. (It asks for questions array to initialize with.) and don't forget to import css file.

import React from 'react';
import { QuizProvider } from 'react-quiz-stepper';
import 'react-quiz-stepper/dist/index.css';

const questions = [];

function App() {
  return (
    <QuizProvider questions={questions}>
      {/* rest of your code here */}
    </QuizProvider>
  );
}
export default App;

Now create your Stepper component and put it inside QuizProvider.

import React from 'react';
import { Stepper, useQuiz } from 'react-quiz-stepper'

function QuizStepperDemo () {
  const { state } = useQuiz()

  return (
    <Stepper>
      {state.questions.map((question) => ...)}
      {
        /**
        * map through all questions and render
        * appropriate input
        * (multi choice or single choice based on question.type)
        * only one question will be active depending on the step value
        */
      }
    </Stepper>
  )
}

export default App

Using useQuiz

const { state, dispatch, getQuestion, getSavedAnswer, generateReport } =
  useQuiz();
NameTypeDescription
stateQuizStatecontains user info, user inputs and questions data.
dispatchReact.DispatchsaveUser: (payload: User) => void saveQuestionAnswer: (payload: UserInput)
getSavedAnswerfunc(questionId) => number or number[] or ""
getQuestionfunc(questionId: number) => SimplifiedQuestion
generateReportfunc() => ReportState

Using useStepper

const { step, handleNext, handleBack, goToStep, isLastStep } = useStepper();
NameTypeDescription
stepnumberIndex of the active question.
handleNextVoidFunctionRenders next question on screen.
handleBackVoidFunctionRenders previous question on screen.
goToStepfunc(index: number) => void goes to specific question provided.
isLastStepbooleanchecks if it is a last step.

It is possible to bind handleBack and handleNext to on click event, to go to next previous and next question respectively.

0.1.8

2 years ago

0.1.7

2 years ago

0.1.6

2 years ago

0.1.5

2 years ago

0.1.4

2 years ago

0.1.3

2 years ago

0.1.2

2 years ago

0.1.1

2 years ago

0.1.0

2 years ago