Rev 450 | Rev 457 | Ir a la última revisión | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |
import React, { useState, useEffect } from "react";const Option = (props) => {// get propsconst { question } = props;// init Statesconst [input, setInput] = useState(question.answer);/*** Update question answer* @param {*} answer*/const handleAnswerSimple = (value) => {setInput(value);question.answer = value;}/*** Update question answer* @param {*} answer*/const handleAnswerMultiple = (value) => {question.answer.includes(value) ?question.answer = removeOptionMultiple(question.answer, value) :question.answer.push(value)setInput(question.answer);}/*** componentDidMount*/useEffect(() => {setInput(question.answer);console.log(question.answer);}, [question]);/*** Delete existing option* @param {*} arr* @param {*} item* @returns*/const removeOptionMultiple = (arr, item) => arr.splice(arr.indexOf(item), 1);return (<div>{question.options.map((opt, key) => {return (<div className="checkbox"key={key}>{question.type == 'multiple' &&<inputtype="checkbox"name={`${opt.slug_option}[]`}value={input}checked={input.includes(opt.slug_option)}onChange={() => handleAnswerMultiple(opt.slug_option)}/>}{question.type != 'multiple' &&<inputtype="radio"name={`${opt.slug_question}`}value={opt.slug_option}checked={input == opt.slug_option}onChange={() => handleAnswerSimple(opt.slug_option)}/>}<divdangerouslySetInnerHTML={{ __html: opt.text }}className="option"/></div>)})}</div>)}export default Option;