Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

176
Views
Show MUI Button Filled

I am using the spotify API, all of which works to display either long term, med term, or short term data. However, I added 'const [activeButton, setActiveButton] = useState(2);' and accompanying code in order to try to have the button that is selected show as a different color. After doing so, nothing renders on the page anymore. Any help would be appreciated thanks!

import axios from 'axios'
import React, { useState} from 'react'
import Navbar from '../Navbar/Navbar'
import Artist from './Artist.js'
import { useContext, useEffect } from 'react'
import { UserTokenContext } from '../Context/UserTokenContext'
import ToggleButton from '@mui/material/ToggleButton'
import ToggleButtonGroup from '@mui/material/ToggleButtonGroup'

const TopArtists = () => {
    const {user, setUser, accessToken, setAccessToken} = useContext(UserTokenContext);
    const TOPARTISTS_ENDPOINT = 'https://api.spotify.com/v1/me/top/artists'
    const [time, setTime] = useState('medium_term');
    const [topArtists, setTopArtists] = useState([]);

    const [activeButton, setActiveButton] = useState(2);
    const handleButtonChange = (event, newButton) => {
        setActiveButton(newButton);
        console.log(newButton);
    }

    const getTopArtists = async () => {
        const {data} = await axios.get(TOPARTISTS_ENDPOINT, {
          headers: {Authorization: `Bearer ${accessToken}`,},
            params: {
                time_range: time
            }
      })
      setTopArtists(data.items);
    }

    useEffect(() => {
      if(user)
        getTopArtists();
    }, [time])

    return (
      <>
        <Navbar/>
        {user ? 
          <div> 
            <h3>Top Artists:</h3>
            <ToggleButtonGroup exclusive onChange = {handleButtonChange}>            
              <ToggleButton color = {activeButton === 1 ? "red" : "blue"} onClick = {() => {
                setTime('long_term');
                setActiveButton(1);}
              }>All Time</ToggleButton>
              <ToggleButton color = {activeButton === 2 ? "red" : "blue"} onClick = {() => {
                setTime('medium_term');
                setActiveButton(2);}
              }>Past Year</ToggleButton>
              <ToggleButton color = {activeButton === 3 ? "red" : "blue"} onClick = {() => {
                setTime('short_term');
                setActiveButton(3);}
              }>Past Month</ToggleButton>
            </ToggleButtonGroup>


            {topArtists && topArtists.map(artist => <Artist artist = {artist}/>)}   
          </div>
        : <p>Log in to see your top artists.</p>
          }
      </>
    )
}

export default TopArtists;
about 4 years ago · Juan Pablo Isaza
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!