<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: rochelin</title>
    <description>The latest articles on DEV Community by rochelin (@rochelin).</description>
    <link>https://dev.to/rochelin</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F882101%2F6fd6e276-a226-42f3-b85c-30305f889cab.png</url>
      <title>DEV Community: rochelin</title>
      <link>https://dev.to/rochelin</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/rochelin"/>
    <language>en</language>
    <item>
      <title>React quizzicall app</title>
      <dc:creator>rochelin</dc:creator>
      <pubDate>Fri, 24 Jun 2022 12:14:43 +0000</pubDate>
      <link>https://dev.to/rochelin/react-quizzicall-app-33nn</link>
      <guid>https://dev.to/rochelin/react-quizzicall-app-33nn</guid>
      <description>&lt;p&gt;Hello, I have a problem on my project,&lt;br&gt;
I would like that when I click on the button check answers all the true answers change background-color in green, I can't get the state of the component Quizzlist to send it in my component Submit your help will be welcome &lt;br&gt;
i using React to do&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;//App.js
import React, {useEffect, useState } from 'react'
import Blob from './Blob'
import Home from './Home'
import Quizz from './Quizz';

const App = () =&amp;gt; {
  const [showHome, setShowHome] = useState(true);
  const [data, setData] = useState([]);

  useEffect(()=&amp;gt;{
      async function fetchData (){
          const response = await fetch("https://opentdb.com/api.php?amount=10&amp;amp;category=31&amp;amp;type=multiple");
          const datas = await response.json();
          setData(datas.results);

      }
      fetchData();
  }, [])

  const updateShowHome = () =&amp;gt;{
    setShowHome(prevShowHome =&amp;gt; !prevShowHome);
  }

  return (
    &amp;lt;main&amp;gt;
      &amp;lt;Blob /&amp;gt;
      {showHome ? &amp;lt;Home handleClick={updateShowHome}/&amp;gt; : &amp;lt;Quizz datas={data}/&amp;gt;}
    &amp;lt;/main&amp;gt;
  )
}

export default App
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;//Quizz.js

import React, { useState } from 'react'
import QuizzList from './QuizzList';
import { nanoid } from 'nanoid';
import Submit from './Submit';

const Quizz = (props) =&amp;gt; {
    const {datas} = props;

    const newDatas = () =&amp;gt; {
      const arr = [];
      datas.forEach(item =&amp;gt; {
        arr.push({...item, id: nanoid(), isCheck: false});
      })
      return arr;
    }

    const [newData, setNewData] = useState(newDatas());

    const [test, setTest] = useState([]);

    const asideElements = newData.map(item =&amp;gt; {
        const randomIndex = Math.floor(Math.random() * item.incorrect_answers.length);
        const allAnswers = [...item.incorrect_answers]
        allAnswers.splice(randomIndex, 0, item.correct_answer);
        return  &amp;lt;QuizzList 
                    key={item.id}
                    question={item.question}
                    correct_answer={item.correct_answer}
                    incorrect_answers={item.incorrect_answers}
                    allAnswers = {allAnswers}
                    isCheck={item.isCheck}
                    id={item.id}
                /&amp;gt;
    }
   )



  return (
    &amp;lt;section className='quizz'&amp;gt;
        {asideElements}
        &amp;lt;div className='container-button'&amp;gt;
          &amp;lt;Submit 
            setNewData={setNewData}
          /&amp;gt;
        &amp;lt;/div&amp;gt;
    &amp;lt;/section&amp;gt;
  )
}

export default Quizz
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;//Quizzlist.js

import React, { useEffect, useState } from 'react'
import { nanoid } from 'nanoid';
import Submit from './Submit';


const QuizzList = (props) =&amp;gt; {
    const {question, correct_answer, incorrect_answers, isCheck, id, allAnswers} = props;
    const regex = /(&amp;amp;quot;)|(&amp;amp;#039;t)|(&amp;amp;#039;s)|(&amp;amp;#039;)|(&amp;amp;amp;!)/gi;
    const otherRegex = /&amp;amp;eacute;/gi;


    const dataAnswers = () =&amp;gt; {
      const arr = [];
      allAnswers.map(item =&amp;gt; {
        arr.push({
          answer: item,
          id: nanoid(),
          isTrue: false
        })
      })
      return arr
    }


    const [state, setState] = useState(dataAnswers());


    const handleCheck = (id) =&amp;gt;{

      setState(prev =&amp;gt; prev.map(item =&amp;gt; {
        if(item.id !== id ){
          return {...item, isTrue: false}
        }
        return item.id === id ? {...item, isTrue: true} :  item;
    }))

  }


    const answerElement = state.map(item =&amp;gt; {


      return(
        &amp;lt;div 
          key={item.id}
          className="current_answers "
          onClick={() =&amp;gt; handleCheck(item.id)}
          style = {{backgroundColor: item.isTrue ? "#D6DBF5" : "#F5F7FB", borderColor: item.isTrue &amp;amp;&amp;amp; "#D6DBF5"}}
        &amp;gt;
          {item.answer.replace(regex, "").replace(otherRegex, "e")}
        &amp;lt;/div&amp;gt;
      )
    })

  return (
    &amp;lt;aside&amp;gt;
      &amp;lt;h1&amp;gt;{question.replace(regex, "").replace(otherRegex, "e")}&amp;lt;/h1&amp;gt;
      &amp;lt;div className='container_answers'&amp;gt;
        {answerElement}
      &amp;lt;/div&amp;gt;
      &amp;lt;div className='border'&amp;gt;&amp;lt;/div&amp;gt;
    &amp;lt;/aside&amp;gt;
  )
}

export default QuizzList
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;//Submit.js

import React, {useState} from 'react';

const Submit = ({setNewData}) =&amp;gt; {

    const [checkAnswers, setCheckAnswers] = useState(true);

    const handleShowAnswers = () =&amp;gt; {

      setNewData(prev =&amp;gt; prev.map(item =&amp;gt;{
        return item.correct_answer
      }))
    }

  return (
    &amp;lt;button 
      onClick={handleShowAnswers}
    &amp;gt;
    {checkAnswers ? "Check answers" : "Play again"}
    &amp;lt;/button&amp;gt;
  )
}

export default Submit
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>help</category>
    </item>
  </channel>
</rss>
