motivation Thoughts
motivation Thoughts

Reputation: 65

don't understand how can I get pollId from reactjs poll

this is my react code here I am getting react poll using API but when I start working on handalchange For POST API request I need (PollId,userId and answer) I am getting userId through { const userId = isAutheticated() && isAutheticated().user._id; } but I do not understand how can I get PollId from my all polls, please help...!

import React, { useState, useEffect } from "react";
import Poll from "react-polls";
import "../../styles.css";
import { isAutheticated } from "../../auth/helper/index";
import { getPolls, postPoll } from "../helper/coreapicalls";
import { useParams } from "react-router-dom";

const MainPoll = () => {
  const userId = isAutheticated() && isAutheticated().user._id;
  const pollId = useParams();
  const id = pollId._Id;
  console.log(id);
  const [polls, setPoll] = useState([]);
  const [error, seterror] = useState(false);
  // Setting answers to state to reload the component with each vote
  const [pollAnswers, setPollAnswers] = useState([]);

  useEffect(() => {
    loadPoll(); 
  }, []);

  const loadPoll = () => {
    getPolls().then((data) => {
      if (data.error) {
        seterror(data.error);
      } else {
        setPoll(data);
        console.log(data);
      }
    });
  };

  // Handling user vote
  // Increments the votes count of answer when the user votes
  const handalchange = () => {
    postPoll();
    console.log("hello");
  };

  return (
    <div className="">
      <div className="container my-5">
        <h1 className="blog_heading my-3">Poll's of the Day</h1>
        <div className="row">
          {polls.reverse().map((poll, index) => (
            <div className="col-lg-4 col-12 poll_border" key={index}>
              <Poll
                noStorage
                question={poll.question}
                answers={Object.keys(poll.options).map((key) => {
                  return {
                    option: key,
                    votes: poll.options[key].length,
                  };
                })}
                onVote={handalchange}
                className="mb-2"
              />
            </div>
          ))}
        </div>
      </div>
    </div>
  );
};

export default MainPoll;

my frontend image -enter image description here Here I have 5 polls , so I can not get PollId from useParams ...! so how can I get..?

Upvotes: 0

Views: 94

Answers (1)

Your component seems to represent list of polls, not any specific poll. So if you have an array of polls instead of one poll, than you have multiple ids instead of the single one.

You can get them by mapping your polls array like that:

const pollIds = polls.map((poll) => poll.id); // or any other prop that stores id

Upvotes: 1

Related Questions