react-sn-question
Version:
A react component to easily create a toggleable question.
100 lines (74 loc) • 2.5 kB
Markdown
[](https://badge.fury.io/js/react-sn-question)
[](https://badge.fury.io/js/react-sn-question)
[](https://david-dm.org/alvarobernalG/react-sn-question)
<p align="center">
<img src="https://lab.alvarobg.com/react-sw-question/assets/question.gif"/>
<br><br>
<br><br>
</p>
```bash
npm run install react-sn-question --save
```
```js
import React from 'react';
import SNQuestion from 'react-sn-question';
import 'react-sn-question/dist/main.css';
import questions from './questions'
class App extends React.Component {
state = {
questions: questions
}
render() {
const isQuestionCorrect = SNQuestion.isQuestionCorrect(this.state.questions)
return (
<SNQuestion
title={"An animal cell contains:"}
resolutionMessage={`The selected value is ${isQuestionCorrect ? 'correct': 'incorrect'}`}
onChange={(value) => checkNewValue(value)}
disable={isQuestionCorrect}
questions={this.state.questions}
/>
)
}
}
```
[](https://codesandbox.io/s/ypz2l8ky11)
Prop | Type | Required | Default | Description
-----|------|----------|---------|-------------
`title` | string | Yes | | The title of the question.
`resolutionMessage` | string | Yes | | Message to be displayed at the bottom of the container which represents the status of the question.
`questions` | Array | Yes | | Contains the questions data.
`onChange`| function | No | undefined | Fires whenever a button is toggled.
`disable` | boolean | No | false | Disables the SNQuestion.
```typescript
interface SNQuestion {
title: string,
resolutionMessage: string,
questions: Array<Question>
onChange?: (value: string, answerIndex: number, questionIndex: number) => void,
disable?: bool,
}
interface Question {
id: string,
correct: number,
selected: number,
options: Array<Option>,
}
interface Option {
name: string,
value: string
}
```
[](https://github.com/AlvaroBernalG/react-switchable)
All contributions are welcome.
MIT license @[Alvaro Bernal G](https://alvarobg.com).